![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Экспорт БД [D7, dBase, FoxPro, Paradox]
Andrey © (2004-08-10 17:34:00)Здравствуйте. У меня возникла проблема. Я составил код для экспорта данных из одной БД в другую. После выполнения этого кода, при обращении к новой (экспортированной) БД выдается ошибка 'Index is out of date', может, кто подскажет, что делать и как с этим бороться?
procedure TForm6.FormActivate(Sender: TObject);
begin
if openDialog1.Execute and fileExists(openDialog1.FileName) then
begin
with Table1 do
begin
Active := False;//Отключаю базу
TableName := OpenDialog1.FileName;// имя новой базы
Active := true;
end;
with Temp1 do
begin
Active := true;
First;
edit;
end;
begin
form6.Cursor:=crAppStart;
label1.Caption:= 'Идет удаление сторй базы данных. Это может занять несколько минут.';
label1.Update;
while not form6.temp1.Eof do
begin
form6.temp1.delete;
Form6.update;
end;
end;
label1.Caption:= 'Идет загрузка новой базы данных. Это может занять несколько минут.';
label1.Update;
form6.table1.First;
form6.temp1.edit;
form6.temp1.first;
while not form6.table1.Eof do
begin
with form6 do
begin
update;
temp1.edit;
Temp1.FieldByName('vrezo').asstring:=table1.FieldByName('vrezo').asstring;
Temp1.FieldByName('zek').asstring:=table1.FieldByName('zek').asstring;
Temp1.FieldByName('shu').asstring:=table1.FieldByName('shu').asstring;
Temp1.FieldByName('dom').asstring:=table1.FieldByName('dom').asstring;
Temp1.FieldByName('korp').asstring:=table1.FieldByName('korp').asstring;
Temp1.FieldByName('kv').asstring:=table1.FieldByName('kv').asstring;
Temp1.FieldByName('kv_ind').asstring:=table1.FieldByName('kv_ind').asstring;
Temp1.FieldByName('rto').asstring:=table1.FieldByName('rto').asstring;
Temp1.FieldByName('rtd').asstring:=table1.FieldByName('rtd').asstring;
Temp1.FieldByName('prim').asstring:=table1.FieldByName('prim').asstring;
Temp1.FieldByName('rto_vikl').asstring:=table1.FieldByName('rto_vikl').asstring;
Temp1.post;
temp1.Next;
table1.Next;
end;
end;
end;
label1.Caption:='Загрузка БД успешно завершена.';
form6.Cursor:=crDefault;
form6.update;
form6.Close;
end;
Andrey (2004-08-13 15:33:00) [1]Изменил код на следующий, а проблема осталась(т.е. выдается ошибка 'Index is out of date').
begin
if openDialog1.Execute and fileExists(openDialog1.FileName) then
begin
istoch.Active := False;
priemnic.Active := False;
istoch.TableName := OpenDialog1.FileName;//Задаю имя новой базы
istoch.Active := True;
if (BatchMove1.Mode = batappend) or (istoch.Exists) then
begin
priemnic.EmptyTable;
BatchMove1.Execute;
istoch.Active :=false;
end;
bushmen (2004-08-10 21:24:00) [2]>while not form6.table1.Eof do
begin
with form6 do
begin
update;
temp1.edit;
Temp1.FieldByName('vrezo').asstring:=table1.FieldByName('vrezo').asstring;
Temp1.FieldByName('zek').asstring:=table1.FieldByName('zek').asstring;
Temp1.FieldByName('shu').asstring:=table1.FieldByName('shu').asstring;
Temp1.FieldByName('dom').asstring:=table1.FieldByName('dom').asstring;
Temp1.FieldByName('korp').asstring:=table1.FieldByName('korp').asstring;
Temp1.FieldByName('kv').asstring:=table1.FieldByName('kv').asstring;
Temp1.FieldByName('kv_ind').asstring:=table1.FieldByName('kv_ind').asstring;
Temp1.FieldByName('rto').asstring:=table1.FieldByName('rto').asstring;
Temp1.FieldByName('rtd').asstring:=table1.FieldByName('rtd').asstring;
Temp1.FieldByName('prim').asstring:=table1.FieldByName('prim').asstring;
Temp1.FieldByName('rto_vikl').asstring:=table1.FieldByName('rto_vikl').asstring;
Temp1.post;
temp1.Next;
table1.Next;
end;
> end;
Что-то намешано всего. Причем тут temp1.Edit, temp1.Next во время экспорта? Надо просто temp1.Append, а в конце temp1.Post
Andrey (2004-08-10 17:46:00) [3]Согласен, лишнее.
Rule (2004-08-10 17:44:00) [4]
form6.temp1.edit;
form6.temp1.first;
непонятно зачем