:: Visual Foxpro, Foxpro for DOS
Доступ к базе 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)?
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Скачать с сайта МС odbc драйвер для vfp9 - там вроде это пофиксено

Тама www.microsoft.com



Отредактировано (14.04.05 14:49)


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
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"
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Не знаю - у меня в системе есть - а откуда взялся - он не говорит




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
Toc_vremenno

Сообщений: 6
Дата регистрации: 14.04.2005
А какая версия? Какая ОС?
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Win2K Prof




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
Toc_vremenno

Сообщений: 6
Дата регистрации: 14.04.2005
А версия драйвера Visual FoxPro ODBC?
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Я чета не туда поехал - вобщем не работают хп и правила при работе с этим ODBC - я думал что из 9-ки ставится и ODBC - а вот ошибся - просто мне это не надо - я на фоксе пишу




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Toc_vremenno!

Сами тексты рулесов приведи. И почитай в хелпе к драйверу какие команды он
поддерживает - да он не весь фоксовый синтаксис поддерживает.
P.S. Более новой версии нет и вряд-ли когда будет - MS переориентировались
на OLE DB - и кстати там тоже далеко не весь синтаксис поддерживается (но
значительно шире чем в ODBC).




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
Toc_vremenno

Сообщений: 6
Дата регистрации: 14.04.2005
Igor,

Даже если поставить простую пользовательскую функцию (хранимую процедуру) с пустым телом, возвращающую "1" - всё равно сразу же ошибка.
К тому же, бесит сам факт, что драйвер не видит хранимые процедуры! Говорит, что "Capability not supported”.

В принципе, я обошёл проблему, использовав Ole Db, но это большой минус для моей программы. Потому что вся задумка была в том, чтобы абстрагироваться от FoxPro интерфейсом ODBC. А ActiveX Data Object - это не столько интерфейс данных, сколько чисто майкрософтский способ доступа к данным.
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Да когда налетели на грабли с ХП оказалось что выполнить их можно только так
не знаю как в С это пишется
=sqlexec(h,'sellect хп() from пустая_табла_с_одной_записью')




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Доступ к базе Visual FoxPro через ODBC и BDE
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Toc_vremenno!

Цитата:
Даже если поставить простую пользовательскую функцию (хранимую
процедуру) с
пустым телом, возвращающую "1" - всё равно сразу же ошибка.
Вообще-то функция использующаяся в качестве RULE должна возвращать
логическое значение.
Я специально проверил - всё работает как и положено. Версия драйвера
такая-же (AFAIR это и есть последний из доступных). Конечно процедура
проверки была тривиальная - на поле RETURN nID > 0 и на запись RETURN nID <
100 - при обновлении и при вставке всё работает как и должно - при
нарушениях возвращается адекватное сообщение об ошибке, при удовлетворении
условий производится вставка/изменение данных...
Цитата:
К тому же, бесит сам факт, что драйвер не видит хранимые процедуры!
Говорит, что "Capability not supported”.
Да, прямой вызов ХП в VFP ODBC не реализован - обойти можно по разному -
piva вариант подсказал...
Кроме того если ХП ориентирована на "действие", то можно повесить её вызов
внутрь триггера на специальную табличку - и чтоб триггер возвращал .F. -
т.е. действие вызвавшее срабатывание триггера отменится (Insert например), а
сама ХП сработает. Также возможно использование ХП в DefaultValue для поля
таблицы - тоже можно как-то использовать.
Цитата:
А ActiveX Data Object - это не столько интерфейс данных
OLE DB # ADO. Несмотря на то что их интерфейсы и очень похожи И что
важнее - MS судя по всему считает ODBC устаревшей и отжившей своё
технологией - OLE DB по крайней мере ещё живёт...




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 42 pasha_usue  (Гостей: 41)

© 2000-2024 Fox Club 
Яндекс.Метрика