Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

for i := 0 to table1.RecordCount-1 do begin [D5, dBase, FoxPro]


the-best-officeman ©   (2002-07-18 21:06:00) 

НУЖНА ПОМОЩЬ МАСТЕРА

всего в базе ( 53"000 ) записей...
Во время выгрузки одной базы в другую. скорость копирования записей начинает ПАДАТЬ...
и где-то на 8"000 записи скорость гдето - 50 записей в секунду. А что дальше ???
что-то я непойму почему так происходит. может подскажите где собака зарыта.

DataSource1.DataSet.First;
with DataSource1.DataSet do begin
form2.show;
form1.enabled:=false;
while not Eof do begin
for i := 0 to table1.RecordCount-1 do begin
DSadvanc.DataSet.Insert;
Tadvanc.Fields[0].text:=table1.Fields[0].text;
Tadvanc.Fields[1].text:=table1.Fields[1].text;
Tadvanc.Fields[2].text:=table1.Fields[3].text;
Tadvanc.Fields[3].text:=table1.Fields[5].text;
Tadvanc.Fields[4].text:=table1.Fields[6].text;
DSadvanc.DataSet.post;
Next;
end;
end;
form1.enabled:=true;
form2.close
end;end;


ShuraGrp   (2002-07-19 10:26:00) [1]

Лучше, конечно, использовать конструкцию ЮЮ (19.07.02 07:09).
Если использовать твою конструкцию, то
for i := 0 to table1.RecordCount-1 do begin
надо заменить на
while not table1.Eof do begin
Это должно значительно ускорить процесс, т.к. не будет вычисляться RecordCount на кажной итерации.


ЮЮ   (2002-07-19 09:51:00) [2]

TBatchMove.Mappings (из Help-а)

Mappings is a list of column mappings (one per line) in one of two forms. To map the column ColName in the source table to the column of the same name in the destination table, use:

ColName

To map the column named SourceColName in the source table to the column named DestColName in the destination table, use:

DestColName=SourceColName


NDR   (2002-07-19 09:47:00) [3]

BatchMove копирует в лоб.
мне нужно синхронизировать ПО ОПРЕДЕЛЕННЫМ полям!
Как это сделать ?

С УВажением, Officeman


Психиатр   (2002-07-19 09:09:00) [4]

>Виталий Панасенко (19.07.02 08:56)

А можно еще Close и после всего вызвать Open.
А можно еще поставить Вам диагноз.


Виталий Панасенко   (2002-07-19 08:56:00) [5]

А можно установить CashUpdate=True и после всего вызвать AplyUpdates


VAleksey   (2002-07-19 08:18:00) [6]

Да. либо как
> ЮЮ (19.07.02 07:09)

либо попробуй метод Table1.BatchMove
либо используй компоненту BatchMove.


ЮЮ   (2002-07-19 07:09:00) [7]

Query.Text:="Insert into advans(f0,f1,f2,f3,f4) select g0,g1,d3,g5,g6 from table1 where ....";
Query.ExecSQL;


ПИТОН   (2002-07-19 05:50:00) [8]

А зачем так сложно?
Поробуй добавлять SQL-запросом


German Ivanov   (2002-07-19 04:27:00) [9]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо