Главная страница
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.01 c
3-92011
Jumbo
2003-08-05 12:54
2003.08.28
CSV


14-92203
Rauf
2003-08-11 04:01
2003.08.28
помогите с поиском музыки


7-92271
Aleksei
2003-06-15 12:39
2003.08.28
Как создать ярлык на Desktop


7-92270
Kirill S
2003-06-15 12:45
2003.08.28
Загрузка файла


3-92025
Nylx
2003-08-04 22:25
2003.08.28
RaveReports