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

Странно ведет себя цикл while not DataSet.Eof do   Найти похожие ветки 

← →
Diouzshev   (2002-11-27 18:57) [0]

Есть примерно такой код:

while not DataSet.Eof do
begin
with DataSet do {TADODataSet}
begin
Line := Fields[0].AsString;
for i:= 1 to FieldsCount - 1 do
Line:= Line + #9 + Fields[0].AsString;
writeln(f, Line);
Next;
end;
end;

Непоняностей две:
1. Почему это безобразие выполняется ок. 8 мин (22000 записей)
2. Скорость падает по мере вызова Next (к концу DataSet примерно в 3 раза)

Обидно то, что сам Access делает экспорт в файл секунд за 10-15.

PS
Delphi 6, ADO, Access
Настройки ADO-компонент - по умолчанию.


← →
sniknik ©   (2002-11-27 19:28) [1]

так им (Access-ом) и делай. и быстрее и без ошибок :-) Line:= Line + #9 + Fields[ 0].AsString;

примерный запрос
SELECT * INTO Test#Txt IN "D:\" "Text;" FROM TableInAccess

Delphi 6, ADO, Access
Настройки ADO-компонент на Jet. где ты взял по умолчанию?


← →
Diouzshev   (2002-11-27 19:35) [2]

For sniknik © (27.11.02 19:28)

>так им (Access-ом) и делай. и быстрее и без ошибок :-) Line:= >Line + #9 + Fields[0].AsString;
Ctrl+C Ctrl+V, сам знаешь %)

>примерный запрос
>SELECT * INTO Test#Txt IN "D:\" "Text;" FROM TableInAccess
Ссылка на доку по этой теме есть?
А обратно можно? (в базу)

>Настройки ADO-компонент на Jet. где ты взял по умолчанию
ещё надоедливый LoginPromt %)


← →
sniknik ©   (2002-11-27 19:41) [3]

>А обратно можно? (в базу)
конечно, анологично, поменяй местами in и out.

дока
D:\Program Files\Common Files\Microsoft Shared\Office10\1049\JETSQL40.CHM
см куда Мс Офис ставил.

надоедливый LoginPromt отключается в ADOConnection.LoginPromt:= False.


← →
Diouzshev   (2002-11-27 20:28) [4]

>надоедливый LoginPromt отключается в ADOConnection.LoginPromt:= False.

Это было отличие от настроек по умолчанию %))


← →
Diouzshev   (2002-12-03 15:04) [5]

Проблема была решена очисткой свойства IndexFieldName (не все было по умолчанию %{ ), время сократилось до 40 секунд, имхо - это приемлемо.


← →
sniknik ©   (2002-12-03 15:28) [6]

нет пределов совершенству! :о)

запрос Access-а (вернее Jet-а) на переброску в текст
SELECT * INTO Test#Txt IN "D:\" "Text;" FROM plucash
Выполнено применительно к 52798 записям. (no recordset)
выполняется 13.5 сек.
plucash - таблица dBase IV (подключение через jet тоже к нему)
24 поля, обший размер полей 429 байт. win2000, celeron 1000

то же самое из Access (mdb) в Text 11 сек.
сравнивай.




← →
Diouzshev   (2002-12-03 16:14) [7]

Все так, но проблема с Next меня интересовала из принципа :)) - не всегда спасает SELECT * INTO

про SELECT * INTO я понял уже давно и успешно применил :) (за что спасибо)



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

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



Память: 0.46 MB
Время: 0.021 c
3-61465
genie
2002-12-01 16:47
2002.12.19
Invalid variant type conversion ??? :`-(


6-61740
Like
2002-10-23 22:59
2002.12.19
NetSessionDel


3-61435
AMS
2002-11-29 15:16
2002.12.19
XML и ADO! Нужна помощь!


7-61848
Ins
2002-10-16 14:14
2002.12.19
Програмирование модема


1-61701
TCrash
2002-12-09 00:29
2002.12.19
}{итрая функция




   Наверх