Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.28;
Скачать: CL | DM;

Вниз

Проблемы со вставкой записей в таблицу DBase   Найти похожие ветки 

 
Алексей Петухов   (2003-08-04 08:18) [0]

Здравствуйте уважаемые мастера.
Проблемы со вставкой записей в таблицу DBase.
Вот при таком раскладе вроде-бы работает, но постпенно замедляется, причем сильно (и это без индексов).
А если цикл Open Close убрать то вставляет только около 130 записей, потом обшиба.

for i:=1000 to 501000 do
begin
if (int(i/100)=i/100) then
begin
qrTov.Close;
qrTov.Open;
end;
qrTov.InsertRecord([i,"name"+inttostr(501001-i),0,0,0,6]);
( 501001-i)
Здравствуйте уважаемые мастера.
Проблемы со вставкой записей в таблицу DBase.
Вот при таком раскладе вроде-бы работает, но постпенно замедляется, причем сильно (и это без индексов).
А если цикл Open Close убрать то вставляет только около 130 записей, потом обшиба.

for i:=1000 to 501000 do
begin
if (int(i/100)=i/100) then
begin
qrTov.Close;
qrTov.Open;
end;
qrTov.InsertRecord([i,"name"+inttostr(501001-i),0,0,0,6]);
Label1.Caption:=inttostr(501001-i);
qrTov.ApplyUpdates;
qrTov.CommitUpdates;
ProgressBar1.Position:=i;
application.ProcessMessages;
end;


Подскажите, как правильно работать с таблицами DBase через BDE с помощью TQuery.
И еще я таблицы создаю используя TQuery, и они получаются типа Visual bDase 7. Как с этим бороться?

Заранее благодарен.


 
Mike1 Kouzmine1   (2003-08-04 09:02) [1]

А что это значит?


 
stud ©   (2003-08-04 09:08) [2]

судя по всему у тебя набор grTov находится в режиме кэшированных изменений, тогда логично вынести applyupdates и commitUpdates за основной цикл. и наверное лучше использовать компонент updatesql


 
Алексей Петухов   (2003-08-04 09:38) [3]

Я использую updatesql.
grTov находится в режиме кэширования изменений.
Если я вынесу applyupdates и commitUpdates за основной цикл, то после добавлений 500 000 записей я окончания applyupdates может неуложиться в 8-ми часовой рабочий день :-).


 
Sergey13 ©   (2003-08-04 09:56) [4]

2Алексей Петухов (04.08.03 08:18)
Тестовые данные что ли забиваешь? Другого объяснения для

>qrTov.InsertRecord([i,"name"+inttostr(501001-i),0,0,0,6]);

я не нахожу. Может тогда подождать просто, если все таки работает.

Анекдот в тему.
-Ну и что что моя программа работает на полчаса дольше? Я просто запущу ее на полчаса раньше. И все.


 
Алексей Петухов   (2003-08-04 10:03) [5]

Тот код, который я предложил в качестве иллюстрирующего примера. А приводить здесь код, не имеющий отношения к сути вопроса - не вижу смысла - только дело усложнять. Смылсл действий сводится к примеру. Можно воспринимать его как тестово-отладочный.

А на счет анекдота - хороший был шутник этот Энштейн.


 
stud ©   (2003-08-04 10:09) [6]

в твоем коде ты коммитиш каждую запись. какой смысл переводить набор в кэшированные изменения?
тогда используй обычный

qrTov.close;
qrTov.sql.text:="insert into .... values...";
qrTov.execsql;



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

Текущий архив: 2003.08.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
6-92144
DocSS
2003-06-19 19:15
2003.08.28
Заполнение html-форм через TWebBrowser?


6-92148
Chlavik
2003-06-19 17:31
2003.08.28
Net Bios


1-92110
Andrew
2003-08-15 11:49
2003.08.28
Как в динамике задавать размеры поля Field1 записи TRecord?


14-92226
Cosmic
2003-08-09 17:04
2003.08.28
Свой SMTP-сервер


7-92288
WMag
2003-06-13 23:29
2003.08.28
Символ разделения целой и дробной частей