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

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

BatchMove копирование


Oleg_teacher ©   (2007-05-04 20:58:00) 

Использую 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' и не пахнет
может кто знает почему и ета ошыбка появлется и как ее избежать


Oleg_teacher   (2007-05-05 10:51:00) [1]


> Кстати, копирование табличек Paradox можно реализовать значительно
> проще - достаточно скопировать файлы *.db, *.px и соответствующие
> индексные файлы в целевую директорию.

Ну наверное согласен брать и просто даже копифайл использовать ДА?и копировать *.db, *.px *.mb


Loginov Dmitry   (2007-05-05 10:46:00) [2]

Form1.Table1 не нужно закрывать (он должен быть открытым (вроде)). А для Form1.Table2 попробуй сделать FieldDefs.Assign(Form1.Table1.FieldDefs), после чего сделать Form1.Table2.CreateTable.
Кстати, копирование табличек Paradox можно реализовать значительно проще - достаточно скопировать файлы *.db, *.px и соответствующие индексные файлы в целевую директорию.


Oleg_teacher   (2007-05-05 10:33:00) [3]

Смотри:
Значит взял в основной программе вызываю следующее:
(в скобках буду указывать значения реальные при отладке)
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:12:00) [4]

> file_name_save_f - ето имя файла из которого копирую даные


А должно быть по идее одно лишь имя таблички без-зо всяких расширений и прочего. А причина возможно в том, что табличка Form1.Table2 в некоторых случаях содержит поле FN, которого нету в Form1.Table1 (правда, утверждать это не могу, т.к. BatchMove не юзал уже давно).


Oleg_teacher   (2007-05-05 09:53:00) [5]


> 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 09:42:00) [6]

Чему равно file_name_save_d ?
Чему равно file_name_save_f ?


Oleg_teacher   (2007-05-05 09:05:00) [7]


> Desdechado ©   (04.05.07 21:08) [1]
> А протрассировать?

а как? плиз помогите


Desdechado   (2007-05-04 21:08:00) [8]

А протрассировать?


Наверх

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