Форум: "Базы";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];
ВнизПроблемы со вставкой записей в таблицу 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c