Главная страница
    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.058 c
15-1447853173
Юрий Зотов
2015-11-18 16:26
2017.01.15
Назад, в прошлое!


15-1449783004
Юрий
2015-12-11 00:30
2017.01.15
С днем рождения ! 11 декабря 2015 пятница


15-1457472602
Юрий
2016-03-09 00:30
2017.01.15
С днем рождения ! 9 марта 2016 среда


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


2-1424681725
Эрнест
2015-02-23 11:55
2017.01.15
URLEncodeReservedChars





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский