データベースのFiledは設計時に設定しますが、Table1のTableNameを変えて処理する場合にFieldが更新されずに前のFieldが残っています。
これをTableNameを変えるたびにFieldを更新するにはどのようにすればいいのでしょうか?
オブジェクトインスペクターで、Fieldを指定して削除すれば消えます。
プログラム中でTableNameを変えるのなら、Fieldを指定しなければ問題有りません。
HOtaさん
設計時にTableアイコンをダブルクリックして、表示したウインドウにマウス右クリックですべてのフィールドを追加するのが普通です。
ここでTableNameを変えても前のフィールドが残ったままです。
プログラムを書いても同様の動作のようです。
TableNameを任意に指定しBatchMoveを使いたいのでフィールドを正しく設定したのです。設計時なら前のフィールドを消して、すべてのフィールドを追加すればよいのですが。
いろいろ試したのですが、プログラムでフィールドを消す方法がわかりません。
これじゃねぇの?
Table1.Fields.Clear;
というか、設計時にフィールドを追加せずそのまま使えば、勝手に全列分の
フィールドが作成されて表示してくれないか?
TBatchMoveで使用する場合は、使用する場合にMappingを指定すれば、TTableのFieldを設計時に追加せずに使用すれば、問題ないのではないですか?
設計時に追加すれば、それは残ります。
HOtaさん
起動直後のBatchMove、Mapping操作はうまくいきます。その後TableNameをかえると、前回のTableのFieldが無いというメッセージが表示されます。
起動直後のFieldがセットされると消さないがきり残っている感じです。
そこで?さんの書かれたTable1.Fields.Clear;を書いたのですが、症状は変わりませんでしたので、ここで質問させていただきました。
簡単なプログラムで検証したところ、?さんやHOtaさんの言われるとおり
TableNameを変更すれば、Filedsは変わりました。設計時に設定すると消えないようです。
今回は別の所に原因があるようです。お騒がせしました。
原因がわかりました。
BatchMove、Mappingを使用したため、次回処理でMappingを使用しない場合でもMapping.Clearを書かなければいけなかった。
ツイート | ![]() |