Конференция "KOL" » DBF + DBF = DBF? [KOL]
 
  • KOLBOSS (15.07.08 17:11) [0]
    Большое спасибо Владимиру за прекрасный модуль KOL для Delphi!

    Вот поставил себе компонент KOLxBase,
    теперь голову себе ломаю.
    подскажите кто-небудь как скопировать одну базу в другую.
  • mdw © (15.07.08 19:18) [1]

    > Вот поставил себе компонент KOLxBase,

    Он совсем кривой. Лучше вот это: http://www.kolnmck.ru/files/components/db/kolmdvdbf.7z . Это если нужно работать напрямую с DBF.

    > теперь голову себе ломаю.подскажите кто-небудь как скопировать
    > одну базу в другую.

    Читаешь запись из исходного файла, пишешь в результирющий файл. И так пока не пройдешь все записи.:)
  • speller (16.07.08 04:35) [2]
    На мускуле я всегда делал дамп базы, потом в дампе менял имя бд и восстанавливал его в новую базу.
  • KOLBoss (16.07.08 09:42) [3]
    mdw  Спасибо работает.

    Вопросик один, а я правельно зделал или как-то можно по другому?


    var
    I, J: Integer;
    DBF2: TKOLmdvDBF;
    begin
       if not DBF.Active then Exit;
       DBF2:= NewmdvDBF('', True);
       DBF2.Active := False;
       DBF2.FileName:= OpenSaveDialog.Filename;
       DBF2.Active := True;
       try
       ProgressBar1.MaxProgress := DBF.RecordCount;
         for i:= 0 to DBF2.RecordCount-1 do begin
         ProgressBar1.Progress := i;
         Form.StatusText[0] := PChar('Кол. Записей ' + int2str(i));
         DBF2.CurrentRecord:= i;
         for j:= 0 to DBF2.FieldsCount-1 do begin
           if j = 0 then
           begin
           DBF.Append;
           SetText(j, GetText2(DBF2, j));
           end
           else SetText(j, GetText2(DBF2, j));
         end;
       end;
       DBF.PackDBF;
       //Open(DBF.FileName);
    finally
    DBF2.Free;
    ProgressBar1.Progress := 0;
    ShowMessage('Add OK, Reload DBF');
    end;

  • mdw © (16.07.08 11:24) [4]

    > Вопросик один, а я правельно зделал или как-то можно по
    > другому?

    Скорее да, чем нет.:)
    А зачем так сложно?

    ...
    DBF2.CurrentRecord:= i;
        DBF.Append;
        for j:= 0 to DBF2.FieldsCount-1 do SetText(j, GetText2(DBF2, j));

    ......
    Наверное стоит еще IsDelete преверять, нафига удаленные записи тянуть?
  • mdw © (16.07.08 11:28) [5]
    Упс. Не дописал....
    Тогда и  DBF.PackDBF не нужно будет.
 
Конференция "KOL" » DBF + DBF = DBF? [KOL]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]