Вниз
Скачать: CL | DM;

Метод TADODataSet.Seek   Найти похожие ветки 

 
yurikon   (2011-07-21 12:26) [0]

Добрый день!

В продолжение темы быстродействия работы с SQL  через ADO.

Перед рефрешом таблицы я запоминаю id строки, чтобы после обновления поставить туда маркер методом Locate. Метод Seek по индексу должен это делать быстрее. Чтобы его использовать, нужен серверный курсор, CommandType= cmdTableDirect и указать имя индекса.

Индекс в таблице точно есть, но при попытке открыть этот датасет вылетает ошибка - "Индекс не существует". Если указать свойство  CommandType= cmdTable, тогда ошибки нет, сортировка есть, но не работает Seek!

В связи с этим вопрос: как запустить Seek и чем отличается Table и TableDirect (в хелпе по этой теме пусто)?

С уважением,
 Юрий.


 
sniknik ©   (2011-07-21 13:03) [1]

> Чтобы его использовать, нужен серверный курсор, CommandType= cmdTableDirect и указать имя индекса.
бред. индекс используется локальный.

> вылетает ошибка - "Индекс не существует".
правильно, так и есть.
Sort:= "FieldName";

> чем отличается Table и TableDirect
фактически Table это эмуляция с полной закачкой всей таблицы на клиента, изменения все одно идут запросами, TableDirect то же самое но с серверным курсором.


 
yurikon   (2011-07-21 15:03) [2]

2 sniknik:

при всем уважении ... это в хелпе написано было. Попробовал как Вы написали - не работает.

Вот что удалось отыскать в msdn:

"adCmdTableDirect

Evaluates CommandText as a table name whose columns are all returned. Used with Recordset.Open or Requery only. To use the Seek method, the Recordset must be opened with adCmdTableDirect.
This value cannot be combined with the ExecuteOptionEnum value adAsyncExecute."


В общем, при попытке присвоить IndexName, вылетает ошибка "Поставщик не поддерживает сортировку и фильтрацию".

Мож с провайдером что-то не так?


 
sniknik ©   (2011-07-21 15:27) [3]

> Мож с провайдером что-то не так?
непосредственно индекс "из файла" поддерживался единственным провайдером - jet. именно про него
> это в хелпе написано было.
с MSSQL можно использовать только локальный.

у меня показано как локальный на клиентском рекордсете просто создать. а как его использовать это можно в хелпе можно почитать. раз уж вместо кода и показа "как делал" пишешь
> Попробовал как Вы написали - не работает.


 
Anatoly Podgoretsky ©   (2011-07-21 15:28) [4]

Locate работает так быстро, что нет смысла заморачиваться.


 
yurikon   (2011-07-21 15:53) [5]

Да уже сам не рад, что заморочился. В моем случае и Locate покатит на 30 строк таблицы.

Правильно, я понял, что в mssql через ADO seek работать не будет?  Если нет, то какие настройки в датасете должны быть тогда?

С уважением.


 
sniknik ©   (2011-07-21 16:58) [6]

> в mssql через ADO seek работать не будет?
это не единственная функция использующая индекс... Locate кстати тоже использует если он есть.


 
yurikon   (2011-07-21 17:39) [7]

Ок, угомонился.

Спасибо за обсуждение! ))


 
SQLEXPRESS   (2011-07-22 08:38) [8]


> Locate работает так быстро, что нет смысла заморачиваться.

>  Locate кстати тоже использует если он есть.


+1


 
Anatoly Podgoretsky ©   (2011-07-22 17:47) [9]

> sniknik  (21.07.2011 16:58:06)  [6]

Это вообще теряет смысл, в использование seek


 
Виталий Панасенко   (2011-07-26 15:05) [10]

Для Д7
Note: The VCL Seek method is a direct implementation of the Seek method for the ADO Recordset object. At the time of this writing, this method is only supported for use with Microsoft Access2000 and the Jet 4 provider.


 
Виталий Панасенко   (2011-07-26 15:06) [11]

И для Access с установкой TableDirect и серверным курсором - внатуре пашет быстро



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.02 c
15-1450244415
KSergey
2015-12-16 08:40
2017.01.15
Смена пути в cmd файле и FAR Manager


15-1448473849
RusSun
2015-11-25 20:50
2017.01.15
Хулиганы добавили offtop сообщения в KOL конференции


3-1308469793
she-wolf2829
2011-06-19 11:49
2017.01.15
запуск хранимых процедур


15-1455954062
Beck
2016-02-20 10:41
2017.01.15
Правильная реализация


6-1256640553
Encore
2009-10-27 13:49
2017.01.15
Post/get неверная кодировка




   Наверх