![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delphi и Fox [D7, dBase, FoxPro]
caesar © (2003-03-31 16:37:00)1-я проблема такая. Подключаюсь к «фоксовой» базе данных через ADO VFPOLEDB.1 провайдера. Не могу получить курсор из ADOStoredProc.
К примеру (на стороне VFoxPRO 7):
Cjdf
Parameters A,B,C
…
Return C
Где с – курсор.
А на стороне Delphi 7:
ADOStoredProc.ProcedureName:=’cjdf’;
ADOStoredProc.Parameters.ParamByName(‘a’).Value:=1;
ADOStoredProc.Parameters.ParamByName(‘b’).Value:=1;
ADOStoredProc.Open или ADOStoredProc.ExecProc или ADOStoredProc.Active:=true;
Естественно параметры описаны за ранее.
A – ftInteger;
B – ftInteger;
C – ftVariant; - Другие типы (ftCursor …) выбрать не получается.
2-я Проблема такая. Все та же БД и то же ADO. Пытаюсь выполнить два запроса в ADOQuery.
ADOQuery.Active:=false;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(‘SELECT * FROM a.dbf WHERE … INTO CURSOR b;’);
ADOQuery.SQL.Add(‘SELECT * FROM b WHERE … INTO CURSOR c’);
ADOQuery.Active:=true;
Запрос отрабатывает, но вместо курсора «c» выдает курсор «b». На процедуру NextRecordSet ругается, говорит что «Текущий проводник не поддерживает возврата нескольких записей в результате выполнения одного действия».
Пожалуйста подскажите что я неправильно делаю и как можно решить эти проблемы!!!
sniknik (2003-03-31 16:55:00) [1]ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(‘SELECT * FROM a.dbf WHERE … INTO CURSOR b;’);
ADOQuery.SQL.Add(‘SELECT * FROM b WHERE … INTO CURSOR c’);
ADOQuery.Active:=true;
вот это в OLEDB провайдере для VFP, не поддерживается (как только столкнулся с ним первое что в глаза бросилось, нет поддержки мультидатасетов)
(а в ODBC - шном есть, схалявили разработчики :-)))
так что решить проблемы можно перейдя на старый недобрый (а кто добрый?) ODBC драйвер. хотя процедуры я там не пробовал.