![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BatchMove для ADOQuery [D5, MSSQL, Paradox]
zsr © (2003-10-17 13:27:00)
Проблема в следующем:
необходимо переписать данные из запроса (MSSQL, ADO) в локальную таблицу (Paradox). Запрос возвращает около 150 тыс записей (а будет и еще больще) и полей всего ничего (6 штук типа Integer), а процесс копирования идет минут 10.
Делаю так:
While Not ADOQuery1.EoF do begin
Table1.Append;
For I:=0 to Pred(ADOQuery1.FieldCount) do
Table1.Fields[I].Value:=Fields[I].Value;
Table1.Post;
ADOQuery1.Next;
end;
Думал, что проблема на стадии записи в лок.таблицу - оставил только чтение - на время это никак не повлияло!!!!
Раньше было сделано на IB (TQuery) и TTable.BatchMove все работало значительно быстрее. Должен же быть какой-то выход?
Спасибо за помощь
ZrenBy (2003-10-17 16:42:00) [1]
Э-э-э.
Вроде бы до D7 были некоторые ньюансы в реализации
TADO Component.
Попробуй установить
ADOQuery1.CursorLocation := clUseServer;
ADOQuery1.CursorType := ctOpenForwardOnly;
ADOQuery1.LockType := ltReadOnly;
У меня на D6 голый цикл по 70000 записей и с параметрами
ADOQuery по умолчанию выполнялся минутами.
При установке вышеуказанных параметров - пару секунд.
Почему - не знаю.
zsr (2003-10-17 16:24:00) [2]
Спасибо,
почитал я ссылки: это не совсем то. Эта штука работает только при установке MS SQL client, а этого делать не хочется - зачем тогда использовать ADO??
Неужели нет других вариантов?
ZrenBy (2003-10-17 13:51:00) [3]http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=18092
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=10158
zsr (2003-10-17 13:39:00) [4]
> ZrenBy
Может подскажете: как использовать DTS в моей проге?
ZrenBy (2003-10-17 13:34:00) [5]
DTS