-
Большое спасибо Владимиру за прекрасный модуль KOL для Delphi!
Вот поставил себе компонент KOLxBase, теперь голову себе ломаю. подскажите кто-небудь как скопировать одну базу в другую.
-
> Вот поставил себе компонент KOLxBase,
Он совсем кривой. Лучше вот это: http://www.kolnmck.ru/files/components/db/kolmdvdbf.7z . Это если нужно работать напрямую с DBF. > теперь голову себе ломаю.подскажите кто-небудь как скопировать > одну базу в другую.
Читаешь запись из исходного файла, пишешь в результирющий файл. И так пока не пройдешь все записи.:)
-
На мускуле я всегда делал дамп базы, потом в дампе менял имя бд и восстанавливал его в новую базу.
-
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;
finally
DBF2.Free;
ProgressBar1.Progress := 0;
ShowMessage('Add OK, Reload DBF');
end;
-
> Вопросик один, а я правельно зделал или как-то можно по > другому?
Скорее да, чем нет.:) А зачем так сложно? ...
DBF2.CurrentRecord:= i;
DBF.Append;
for j:= 0 to DBF2.FieldsCount-1 do SetText(j, GetText2(DBF2, j));
...... Наверное стоит еще IsDelete преверять, нафига удаленные записи тянуть?
-
Упс. Не дописал.... Тогда и DBF.PackDBF не нужно будет.
|