Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Вниз

Метод 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 вся ветка

Форум: "Базы";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.072 c
2-1423657337
Александр_2015
2015-02-11 15:22
2017.01.15
DBGrid с возможностью WordWrap


6-1282190766
avkit
2010-08-19 08:06
2017.01.15
hyperterminal


15-1455312603
Юрий
2016-02-13 00:30
2017.01.15
С днем рождения ! 13 февраля 2016 суббота


2-1428448138
Дмитрий
2015-04-08 02:08
2017.01.15
Закладки в Word


15-1450710851
kapwell
2015-12-21 18:14
2017.01.15
работа на делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский