Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.19;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-1181165424
Angakok
2007-06-07 01:30
2007.08.19
Аналог fmod


5-1160128745
Alek_1
2006-10-06 13:59
2007.08.19
idSMTP


2-1185473507
zep
2007-07-26 22:11
2007.08.19
InvalidPointer


15-1184906287
vasIZmax
2007-07-20 08:38
2007.08.19
Тестирование приложения


15-1184588649
leonidus
2007-07-16 16:24
2007.08.19
Программа с использованием SMS