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

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

Экспорт БД [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;


непонятно зачем


Наверх

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