BatchMoveを使ってテーブルAの情報をテーブルBに反映(更新)させたいのですが、updateのやり方がよくわかりません・・・。
インデックスがどうのこうのっていうメッセージ出るんですが、
具体的にどこを変更すべきなんですか?
色んなサイト見たんですがどれも説明不足で・・・
どなたか優しい方、ご教授くださいませ。。。
>インデックスがどうのこうのっていうメッセージ出るんですが、
詳しい内容がわからないとどうしようもないですし、
どんなコードを書いてるのかわからないと答えようもないですよね?
サイトが説明不足というのは、自分とまったく同じことをやっていて、
相違点がパッと見わかるコードがない、という意味だと思いますが、
それだと進歩がないですよ。
そんなものあるわけないです。
やり方ってだけなら私は以下の4行でできてます。
//コピー元
TBatchMove.Source := TTable;
//コピー先
TBatchMove.Destination := TBDEDataSet;
//コピーモード
TBatchMove.Mode := モード指定;
//実行
TBatchMove.Execute;
あとエラー内容は書くなら正確に書いた方が良いと思いますよ。
文面からモードはbatUpdateの様な気はしますが,その場合インデックスを定義している必要があるみたいですね。インデックス定義されてますか?
※ヘルプ参照
>インデックス?さん
優しい回答ありがとうございます。
詳しく状況を書かせていただきますと、
Delphi4 Oracle(すいません、バージョン知りません)
WindowsXPの環境下で
テーブルAからテーブルBにBatchmoveコンポーネントを使ってレコードを移動させたいのですが、
モードbatAppendとモードbatCopyはインデックス?さんの方法で簡単に出来ました。
が、その他の3モード(batAppendUpdate,batDelete,batUpdate)は
単にモードを変更しただけだと
「対象はインデックス付けされていなければなりません」
とエラーメッセージがでます。
インデックスを作成していなかったのが原因なのはわかったので、
転送元テーブルAの列Aと 転送先テーブルBの列B(列Aと列Bは同一カラム名)に
Create Index文でインデックス指定
(インデックス名 : 列A→IndexA、列B→IndexB)しました。
その後、tableコンポーネントのIndex NameプロパティをA、BそれぞれIndexA、IndexBと指定したのですが、この状態で実行しても上記と同じエラーメッセージが出ます。。。
使いたいモードはインデックス?さんの言うとおりbatUpdateです。
何か、間違ってますか?
ヘルプを見たのですが、私にはよくわからなくて・・・
どうやってbatUpdateを行いますか?
すいませんが、ご教授お願いいたします。