BatchMoveでUpdateするには?


でるふぁいはなこ  2008-10-24 00:13:56  No: 32349  IP: 192.*.*.*

BatchMoveを使ってテーブルAの情報をテーブルBに反映(更新)させたいのですが、updateのやり方がよくわかりません・・・。

インデックスがどうのこうのっていうメッセージ出るんですが、
具体的にどこを変更すべきなんですか?

色んなサイト見たんですがどれも説明不足で・・・


どなたか優しい方、ご教授くださいませ。。。

編集 削除
概要  2008-10-24 02:19:48  No: 32350  IP: 192.*.*.*

>インデックスがどうのこうのっていうメッセージ出るんですが、
詳しい内容がわからないとどうしようもないですし、
どんなコードを書いてるのかわからないと答えようもないですよね?

サイトが説明不足というのは、自分とまったく同じことをやっていて、
相違点がパッと見わかるコードがない、という意味だと思いますが、
それだと進歩がないですよ。
そんなものあるわけないです。

編集 削除
インデックス?  2008-10-24 16:43:38  No: 32351  IP: 192.*.*.*

やり方ってだけなら私は以下の4行でできてます。

//コピー元
TBatchMove.Source := TTable;
//コピー先
TBatchMove.Destination := TBDEDataSet;
//コピーモード
TBatchMove.Mode := モード指定;
//実行
TBatchMove.Execute;

あとエラー内容は書くなら正確に書いた方が良いと思いますよ。
文面からモードはbatUpdateの様な気はしますが,その場合インデックスを定義している必要があるみたいですね。インデックス定義されてますか?
※ヘルプ参照

編集 削除
でるふぁいはなこ  2008-10-25 16:48:09  No: 32352  IP: 192.*.*.*

>インデックス?さん
優しい回答ありがとうございます。
詳しく状況を書かせていただきますと、

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を行いますか?
すいませんが、ご教授お願いいたします。

編集 削除