Форум: "Базы";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
ВнизBatchMove копирование Найти похожие ветки
← →
Oleg_teacher © (2007-05-04 20:58) [0]Использую BatchMove для копирования базы из Table1 в Table2
procedure CopyTable(FromDir, SrcTblName, ToDir, DestTblName:string);
begin
with Form1.Table2 do
begin
Active:=false;
DatabaseName:=ToDir;
TableName:=DestTblName;
TableType:=ttParadox;
end;
with Form1.BatchMove1 do
begin
Source := Form1.Table1;
Destination := Form1.Table2;
Mode := batCopy;
Execute;
end;
end;
procedure CopyTable(FromDir, SrcTblName, ToDir, DestTblName:string);
var s:string;
begin
with Form1.Table2 do
begin
Active:=false;
DatabaseName:=ToDir;
TableName:=DestTblName;
TableType:=ttParadox;
Active:=true;
end;
Form1.Table2.Active:=true;
with Form1.BatchMove1 do
begin
Source := Form1.Table1;
Destination := Form1.Table2;
Mode := batCopy;
Execute;
// ShowMessage(IntToStr(MovedCount) + " records copied");
end;
end;
но в некоторых случаях (невсегда, не пойму почему) выводится сообщение Table1: Field "FN" not found
перед візовом етой процедуры пишу:
with Form1.Table1 do
begin
Active:=false;
DatabaseName:=file_name_save_d;
TableName:=file_name_save_f;
TableType:=ttParadox;
end;
Хотя в таблице file_name_save_f полем "FN" и не пахнет
может кто знает почему и ета ошыбка появлется и как ее избежать
← →
Desdechado © (2007-05-04 21:08) [1]А протрассировать?
← →
Oleg_teacher © (2007-05-05 09:05) [2]
> Desdechado © (04.05.07 21:08) [1]
> А протрассировать?
а как? плиз помогите
← →
Loginov Dmitry © (2007-05-05 09:42) [3]Чему равно file_name_save_d ?
Чему равно file_name_save_f ?
← →
Oleg_teacher © (2007-05-05 09:53) [4]
> Loginov Dmitry © (05.05.07 09:42) [3]
> Чему равно file_name_save_d ?
> Чему равно file_name_save_f ?
file_name_save_d ето путь к папке откуда беру базу. в отладчике после виполнения в мойом случае="C:\Documents and Settings\User\Рабочий стол\Editor2_22_04\Test\NEw\"
file_name_save_f - ето имя файла из которого копирую даные
← →
Loginov Dmitry © (2007-05-05 10:12) [5]> file_name_save_f - ето имя файла из которого копирую даные
А должно быть по идее одно лишь имя таблички без-зо всяких расширений и прочего. А причина возможно в том, что табличка Form1.Table2 в некоторых случаях содержит поле FN, которого нету в Form1.Table1 (правда, утверждать это не могу, т.к. BatchMove не юзал уже давно).
← →
Oleg_teacher © (2007-05-05 10:33) [6]Смотри:
Значит взял в основной программе вызываю следующее:
(в скобках буду указывать значения реальные при отладке)
file_name:="temporally~";{Здесь понятно!!!}
file_name_save_d:=ExtractFilePath(OpenDialog1.FileName);
{"C:\Documents and Settings\User\Рабочий стол\Editor2_22_04\Test\NEw\" (я выбираю файл с етой папки)}
file_name_save_f:=copy(ExtractFileName(OpenDialog1.FileName),1,pos(".",Extrac tFileName(OpenDialog1.FileName))-1);{NEw- ето имя файла которого я выбрал без разширения}
CopyTable(file_name_save_d,file_name_save_f+"_param",ExtractFilePath(Application.ExeName),file_name+"param~");{Хочу чтобы с выбраной папки скопировался файл file_name_save_f+"_param" (он есть NEw_param.db) в папку где запускается программа с именем file_name+"param~}
Процедура CopyTable имеет вид(переделал чутчуть)
procedure CopyTable(FromDir, SrcTblName, ToDir, DestTblName:string);
begin
with Form1.Table2 do
begin
Active:=false;
DatabaseName:=ToDir;
TableName:=DestTblName;
TableType:=ttParadox;
end;
with Form1.Table1 do
begin
Active:=false;
DatabaseName:=FromDir;
TableName:=SrcTblName;
TableType:=ttParadox;
end;
with Form1.BatchMove1 do
begin
Source := Form1.Table1;
Destination := Form1.Table2;
Mode := batCopy;
Execute;
end;
end;
На запуске Execute и выдает ошыбка. Не знаю может я не закрыл Table. Использую Close. Впринцыпе вроде (не знаю) ето закрывает но просто Опен вызвать для Табела и таблица будет открыта? Может есть команда которая полностю закрывает таблицу.
(Так что потом надо снова обезательно
with Form1.Table1 do
begin
Active:=false;
DatabaseName:=каталог;
TableName:=имя;
TableType:=ttParadox;
end;)??????????????????????????????
Причем примечательній факт:
Когда первій раз копирую то все нормально
Когда потом еще раз не закріваючи программу копирую тогда ошібка
← →
Loginov Dmitry © (2007-05-05 10:46) [7]Form1.Table1 не нужно закрывать (он должен быть открытым (вроде)). А для Form1.Table2 попробуй сделать FieldDefs.Assign(Form1.Table1.FieldDefs), после чего сделать Form1.Table2.CreateTable.
Кстати, копирование табличек Paradox можно реализовать значительно проще - достаточно скопировать файлы *.db, *.px и соответствующие индексные файлы в целевую директорию.
← →
Oleg_teacher © (2007-05-05 10:51) [8]
> Кстати, копирование табличек Paradox можно реализовать значительно
> проще - достаточно скопировать файлы *.db, *.px и соответствующие
> индексные файлы в целевую директорию.
Ну наверное согласен брать и просто даже копифайл использовать ДА?и копировать *.db, *.px *.mb
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.063 c