別ブログに書いて "Delphi Advent Calendar 2016" の記事を一部書き直しQiitaに再投稿したものです。
はじめに
FDMemTableのフィールド定義をIDE上で行う方法は、最近のDelphiでは、”データセットの割り当て..”機能を使うことで、TFDQueryなどから、取り込むことができるようになっていますが、古いもの(XE5以前は無い。XE6,XE7は未確認。XE8以降はあり)では、このメニューが出ません。
このため、フィールドを1つづつ手作業で追加するということになりちょっと面倒です。これをちょっと楽するためのテクニックです。
実際のテクニック
FDMemTableを使った方法
最近のDelphiの方法
1)FDMemTableで必要なフィールドを取得できるクエリを書いたFDQueryを作成。
2)FDQueryをOpenし、フィールドエディタですべてのフィールを取り込む。
3)FDMemTable上で、右マウスボタンでメニューを表示。
4)"データセット割り当て"を選択。
5)上記、FDQueryを選択。
6)再度、FDMemTable上で、右マウスボタンでメニューを表示。
7)"フィールドエディタ"を選択
8)"フィールドエディタ"上で、右マウスボタンでメニューを表示。
9)"すべてのフィールドを追加"を選択
10)FDQueryのフィールド定義がコピーされる。
以上
ClientDataSetを使った方法
古いものでは、4) の"データセット割り当て"が無く、”項目の設定”のみである。
ClientDataSetは、上記と同様の作業ができるので、こちらを使う。
プロパティの関連図けは
ClientDataSet1. ProviderName -> DataSetProvider1
DataSetProvider1.Dataset -> FDQuery1
1)上記プロパティ設定後、ClientDataSet1上で、右マウスボタンでメニューを表示。
2)”項目の設定”を選択。フィールドエディタが表示される。
3)"フィールドエディタ"上で、右マウスボタンでメニューを表示。
4)"すべてのフィールドを追加"を選択
5)FDQueryのフィールド定義がコピーされる。
6)dfmをエディタ表示する。
7)上記、ClientDataSet1のクラスを、TFDMemTableに変更。
8)エディタからフォーム表示へ
9)プロパティの相違でエラーメッセージが出るが無視。
10)保存で、ClientDataSet1のpas上のクラス定義の相違のメッセージが出るのでOKする。
以上