Форум: "Базы";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
ВнизНе работает в ADO поддержка индексов и соответственно SЕЕК Найти похожие ветки
← →
Alexey Tmur (2003-03-04 11:36) [0]Столкнулся с такой проблемой - Когда в ADOTable пытаюсь установить свойство IndexName или делаю Seek, то получаю ошибку "Current provider does not support the necessary interface for Index functionality" Использую Microsoft OLE DB provider for SQL Server. Что может быть?
← →
sniknik (2003-03-04 11:41) [1]MSSQL не любит Table (вернее принципов которые идут при работе с ним), переводи на ADODataSet и запросы.
ADO совсем ни при чем.
← →
Alexey Tmur (2003-03-04 11:56) [2]Получил то-же сообщение.
Дело в том, что там раньше был BDE и были Find-ы с индексами для перемешения курсора. Сейчас хочу с минимальными изменениями перевести все на ADO заменив соответствующие компоненты и Find на Seek.
← →
sniknik (2003-03-04 12:03) [3]> Сейчас хочу с минимальными изменениями
с минимальными не получится. локальный подход меняеш на клиент/сервер. готовься к глобальным изменениям. или не будет смысла в переходе, будет медленее и глючнее.
← →
Delirium (2003-03-04 12:34) [4]У ADO существуест своя системя индексации, которая раотает независимо от сервера БД, чтобы проиндексировать какое-либо поле на уровне RecordSet надо сделать следующее:
ADOQuery1.Recordset.Fields["MyField"].Properties["Optimize"].Value:=True;
после этой операции создастся локальный индекс, по выбраному полю.
← →
Alexey Tmur (2003-03-04 13:31) [5]Все тоже :( Что еще можно придумать, чтобы курсор предвинуть по индексу? А то locate уж больно долго работает.
← →
Delirium (2003-03-04 13:43) [6]Если взглянуть на реализацию ADODataSet становится очевидным,
что Locate это закамуфлированный RecordSet.Filter, а Seek соответственно RecordSet.Seek (описание см. MSDN). Так что если оптимизация (локальная индексация) не даёт ощутимого эффекта, значит стоит попробовать решить задачу на сервере. По видимому ты пытаешься искать в очень большой выборке.
← →
sniknik (2003-03-04 13:45) [7]Поиск по фильтру.
Запрос с условием.
и хелп посмотреть до кучи
Using the Seek method depends on the settings of a few properties. IndexName must be set to activate the index to use, CommandType must be cmdTableDirect (for TADODataSet, set TableDirect to True for a TADOTable), CursorLocation must be clUseServer, and CursorType must be ctKeySet.
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.
(хелпы у меня вроде самые новые)
← →
Delirium (2003-03-04 13:47) [8]Можно правда, поробовать CursorLocation=clServer и Seek, возможно это даст какой-то эффект
← →
Алексей Тмур (2003-03-04 15:05) [9]Тоже не дает никакого эффекта. Странно все это ведь должно же оно работать! Получается, что Seek в принципе вообще не работает. Вроде и ADO последний 2.7SP1 и Delphi последний.
← →
sniknik (2003-03-04 16:20) [10]прочитай еше раз sniknik © (04.03.03 13:45) внимательно.
хотя ладно переведу, основное (пусть коряво)
> At the time of this writing, this method is only supported for use with Microsoft Access2000 and the Jet 4 provider.
В момент написания этого, метод поддерживается для использования только Microsoft Access2000 и Jet 4 provider.
(этот метод подразумевается Seek как мне кажется :о), описание то его взято)
← →
Алексей Тмур (2003-03-04 16:34) [11]Спасибо. А слона то я и не заметил. Плохо день сегодня начался :( Короче на запросы придется переписывать
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c