TFDBatchMoveで自動的にテーブル構造を作成するには?


コウ  2017-10-11 19:53:25  No: 48788

Windows10、DelphiXe8、データーベースがAccessで開発しています。FireDacのTFDBatchMoveに関する質問です。

TFDBatchMoveを実行したところ「入力テーブルまたはクエリ 'TABLE1' が見つかりませんでした。そのテーブルやクエリが存在していること、または名前が正しいことを確認してください。」のメッセージが表示されました。予めTABLE1に複写元と同一のテーブル構造を作成して実行しましたらうまくいきました。

そこで質問です

複写元のテーブルと同一の構造を複写先に自動的に作成するにはどうしたら良いでしょうか?旧BDEのBatchMoveコンポーネントでは何も設定しなくても自動的に作成してくれたのですが・・・。

ネットで調べてのそれらしい掲載は無かったので何卒宜しくお願い致します。


かず  2017-10-12 04:18:54  No: 48789

FireDacのBatchMoveは、使ったことがありませんが、
BDEでもフィールド定義、インデックス定義をコピーしてから、BatchMoveを使っていました。
以下は、BDEではこのように書いていました。FireDacでも全く同じとはいかないと思いますが、このような感じで書き直せばいけるかな〜?

フィールド定義、インデックス定義を指定しファイルを作る
    with TaihiTable do begin
      Active := False;
      Create(nil);
      TableName := 'Hojou.DB';
      TableType := ttParadox;
      FieldDefs.Assign(HojouTable.FieldDefs);
      IndexDefs.Assign(HojouTable.IndexDefs);
      CreateTable;
    End;

一旦データを消す
  with TaihiTable do begin
    Active := False;
    TableName := Filemei;
    TableType := ttParadox;
    EmptyTable;
  end;
データをコピー
      BatchMove1.Source := HojouTable;
      BatchMove1.Destination := TaihiTable;
      BatchMove1.Mode := batAppend;
      BatchMove1.Execute;


コウ  2017-10-12 18:52:26  No: 48790

かずさん、ご丁寧に有難う御座います。FireDacとBDEではプロパティー、メゾッドの内容が違うので出来ないみたいです。

例えばFireDacにはEmptyTableメゾッドが無かったりします。すみませんでした。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加