![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Провайдер VFPOLEDB.1 и запрет возврата удаленных запис [D7, dBase, FoxPro]
Сергей М. © (2010-09-17 17:49:00)Строка коннекта:
Provider=VFPOLEDB.1;
Data Source=x:\yyy\zzz.dbf;
Mode=Share Deny Write;
Deleted=Yes;
и т.д.
Не работает, зараза.. Возвращает все подряд - и удаленные и не удаленные ..
Явное требование 'SET DELETED ON' в ADCommand.CommandText так же не приводит к ожидаемому результату.
Где грабли ?)
sniknik (2010-09-20 14:52:00) [21]> черным по желтому написано
> Note
> Visual FoxPro OLE DB Provider does not support multiple result sets.
> ?
и тем не менее, в ODBC драйвере они были. (не буду искать доку, и так помню, у меня без них одна программа бы не работала)
> Но команду SET DELETED On/OFF он обязан понимать и исполнять как положено
ну, у меня и исполняет. как положено.
> adoConn.ConnectionString := 'Provider=VFPOLEDB.1;Data Source=x:\yyy;Password="";Collating Sequence=MACHINE
adoConn.KeepConnection := ???
Сергей М. (2010-09-20 13:56:00) [22]
> sniknik © (18.09.10 09:01) [4]
Не возьму в толк нафига мне множественные рекордсеты, тем более что в
http://msdn.microsoft.com/en-us/library/0xzsac67%28VS.80%29.aspx
черным по желтому написано
Note
Visual FoxPro OLE DB Provider does not support multiple result sets.
?
Все что мне надо - это после коннекта к провайдеру (OLEDB или ODBC) установить режим игнора удал.записей в возвращаемых провайдером наборах данных, после чего открыть собственно требуемый НД.
Ну хорошо, пусть, предположим, vfpoledb-провайдер "не понимает" расширенного св-ва "Deleted"
Но команду SET DELETED On/OFF он обязанпонимать и исполнять как положено, судя хотя бы по первоисточнику:
http://msdn.microsoft.com/en-us/library/80x51c04%28v=VS.80%29.aspx
Вот рантайм-эквивалент моих потуг, не приводящих к желаемому результату:
adoConn.ConnectionString := 'Provider=VFPOLEDB.1;Data Source=x:\yyy;Password="";Collating Sequence=MACHINE
adoCmd.Connection := adoConn;
adoDataset.Connection := adoConn;
adoCmd.Connection.Connected := True;
cmd.CommandText := 'SET DELETED ON';
cmd.Execute;
adoDataset.Open;
Команда SET DELETED ON якобыуспешно отрабатывается (иначе бы я схлопотал исключение), дейтасет успешно открывается, но в нем я вижу солянку из существующих и удаленных записей.
Вот и стою на асфальте в лыжи обутый..
p.s
Долбаный фокс, когда же он наконец окончательно умрет ?)
sniknik (2010-09-18 09:18:00) [23]> а SET DELETED OFF - пожалуйста вам, с удаленными ..
вообще, проверил, у меня так работает... а в строке при наборе в мастере параметра Deleted совсем нет. т.е. возможно ты пытаешься задать не существующий параметр, или у меня версия драйвера другая, давно ставил, точно не новая.
sniknik (2010-09-18 09:01:00) [24]> ODBC, проблем как помнится не было
тоже работал с ним только через ODBC... но по другой причине.
вот попробуй в подключении к ODBC выполнить 2 запроса в одном блоке/команде (разделенные ;). работает? а теперь то же самое в OLEDB... а я с MSSQL уже как то привык к множественным рекордсетам (ну и если не работает одно, причем давно, и не исправляют, то где гарантии на остальное?).
Сергей М. (2010-09-17 22:36:00) [25]Раньш бывалочи ходил в фоксовые таблицы через ISAM да ODBC, проблем как помнится не было - Deleted=Yes отрабатывала как положено ..
А тут вот приспичило постучать через OLEDB - и нате вам)..
Сергей М. (2010-09-17 22:26:00) [26]
> sniknik © (17.09.10 19:10) [1]
Если бы)..
Это мелкомягкие так умудрились сократить IgnoreDeleted..
> попробуй No
Хоть Но, хоть Йес, хоть Да, хоть Нет - результат один и тот же ..
Чувствуя себя полным бараном открываю FoxPro25, командую ему SET DELETED ON - и та же самая таблица расчудесно показывается им без удаленных записей, а SET DELETED OFF - пожалуйста вам, с удаленными ..
sniknik (2010-09-17 19:10:00) [27]> Deleted=Yes;
указание показывать удаленное... попробуй No.