Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
Toc_vremenno Автор Сообщений: 6 Дата регистрации: 14.04.2005 |
Привет
Я пишу программу на Borland C++ Builder 6, которая работает с базой Visual FoxPro: читает содержимое таблиц, объединяет таблицы, удаляет записи, вставляет и так далее. И в принципе, всё работает... за одним исключением. Как только происходит вставка записи в таблицу, у которой установлен Rule на запрос INSERT, выдаётся ошибка типа "Syntax error or access was denied". Как только Rule убираешь - всё ОК. Когда источник данных просматриваешь в SQL Explorer, то к таблицам доступ есть, а на Stored Procedures нет доступа – “Capability not supported”. Почитал справку по драйверу ODBC, там сказано: “You cannot create Visual Foxpro rulse, triggers, default values or stored procedures using the ODBC driver. However, your application might interact with existing rules, triggers, default values or stored procedures as it inserts, updates, or deletes data stored in a database. If your application interacts with data whose rules, triggers, default values or stored procedures call any other Visual FoxPro commands or functions, the driver generates an error…” Правильно ли я понял, что через ODBC можно работать с базой, в которой используются только самые простые Rules. А если в Rules содержатся вызовы других функций, то всегда будет ошибка? Как же тогда вызывать хранимые процедуры через ODBC? Может требуется альтернативный драйвер ODBC (у меня v. 6.1.8629.1)? |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Скачать с сайта МС odbc драйвер для vfp9 - там вроде это пофиксено
Тама www.microsoft.com Отредактировано (14.04.05 14:49) ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
Toc_vremenno Автор Сообщений: 6 Дата регистрации: 14.04.2005 |
OLE DB - это немножко другая вещь. Да, через неё работают хранимые процедуры и даже может быть это решило бы мою проблему. Для этого придётся использовать компонет ADO. Но... во-первых, в программе есть конструкции чисто BDE-шные, а как в BDE сделать алиас на источник данных OLE DB? а во-вторых, возможно будут модули и на других языках, а у них будет доступ только к ODBC.
Значит нужен именно новый драйвер ODBC. А на сайте MS лежит только 6.1.8629.1, который не открывает самплы к Visual FoxPro 9 - говорит "this file was created with earlier version" |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Не знаю - у меня в системе есть - а откуда взялся - он не говорит
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
Toc_vremenno Автор Сообщений: 6 Дата регистрации: 14.04.2005 |
А какая версия? Какая ОС?
|
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Win2K Prof
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
Toc_vremenno Автор Сообщений: 6 Дата регистрации: 14.04.2005 |
А версия драйвера Visual FoxPro ODBC?
|
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Я чета не туда поехал - вобщем не работают хп и правила при работе с этим ODBC - я думал что из 9-ки ставится и ODBC - а вот ошибся - просто мне это не надо - я на фоксе пишу
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi Toc_vremenno!
Сами тексты рулесов приведи. И почитай в хелпе к драйверу какие команды он поддерживает - да он не весь фоксовый синтаксис поддерживает. P.S. Более новой версии нет и вряд-ли когда будет - MS переориентировались на OLE DB - и кстати там тоже далеко не весь синтаксис поддерживается (но значительно шире чем в ODBC). ------------------ WBR, Igor |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
Toc_vremenno Автор Сообщений: 6 Дата регистрации: 14.04.2005 |
Igor,
Даже если поставить простую пользовательскую функцию (хранимую процедуру) с пустым телом, возвращающую "1" - всё равно сразу же ошибка. К тому же, бесит сам факт, что драйвер не видит хранимые процедуры! Говорит, что "Capability not supported”. В принципе, я обошёл проблему, использовав Ole Db, но это большой минус для моей программы. Потому что вся задумка была в том, чтобы абстрагироваться от FoxPro интерфейсом ODBC. А ActiveX Data Object - это не столько интерфейс данных, сколько чисто майкрософтский способ доступа к данным. |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Да когда налетели на грабли с ХП оказалось что выполнить их можно только так
не знаю как в С это пишется =sqlexec(h,'sellect хп() from пустая_табла_с_одной_записью') ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Доступ к базе Visual FoxPro через ODBC и BDE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi Toc_vremenno!
Цитата:Вообще-то функция использующаяся в качестве RULE должна возвращать логическое значение. Я специально проверил - всё работает как и положено. Версия драйвера такая-же (AFAIR это и есть последний из доступных). Конечно процедура проверки была тривиальная - на поле RETURN nID > 0 и на запись RETURN nID < 100 - при обновлении и при вставке всё работает как и должно - при нарушениях возвращается адекватное сообщение об ошибке, при удовлетворении условий производится вставка/изменение данных... Цитата:Да, прямой вызов ХП в VFP ODBC не реализован - обойти можно по разному - piva вариант подсказал... Кроме того если ХП ориентирована на "действие", то можно повесить её вызов внутрь триггера на специальную табличку - и чтоб триггер возвращал .F. - т.е. действие вызвавшее срабатывание триггера отменится (Insert например), а сама ХП сработает. Также возможно использование ХП в DefaultValue для поля таблицы - тоже можно как-то использовать. Цитата:OLE DB # ADO. Несмотря на то что их интерфейсы и очень похожи И что важнее - MS судя по всему считает ODBC устаревшей и отжившей своё технологией - OLE DB по крайней мере ещё живёт... ------------------ WBR, Igor |
© 2000-2024 Fox Club  |