☆BDP.NETを使ったマスター/詳細
Windowsフォームアプリケーションで、BDP.NET を使って InterBase のデータベースをマスター/詳細に設定し、フォーム上の2つのDataGridに表示させて見ました。
(試行錯誤した結果なので、この方法が正しいかどうかは疑問ですので、ご注意を・・・。)
1.BdpConnection1 を配置します。
次に、オブジェクトインスペクタ下部の接続エディタをクリックしてデータベースを
設定します。
2.BdpDataAdapter1 を配置します。
a) オブジェクトインスペクタ下部のデータアダプタの設定をクリックします。
b) テーブル一覧からマスターテーブルに該当するものを選択します。
c) SQL生成ボタンを押します。
d) データセットタブに移動して、データセットの新規作成を選択し、
OKボタンを押します。
e) BdpDataAdapter1 の Active を True にして False にします。
※この動作により dataSet1 の Tables 内に、このテーブルが追加されます。
※これをしないでリレーションを設定しようとすると
「リレーションを追加する前に、データセットにテーブルが必要です。」
とエラーメッセージが表示されます。
3.BdpDataAdapter2を配置します。
a) オブジェクトインスペクタ下部のデータアダプタの設定をクリックします。
b) テーブル一覧から詳細テーブルに該当するものを選択します。
c) SQL生成ボタンを押します。
d) データセットタブに移動して、既存のデータセットを選択し、OKボタンを押します。
※このとき BdpDataAdapter1 で作成したデータセットと同じものを選択します。
e) BdpDataAdapter2 の Active を True にして False とします。
4.自動的に作成された dataSet1 の設定
a) Relations のボタンをクリックします。
b) 追加ボタンを押します。
c) 親テーブルにマスター、子テーブルに詳細テーブルが表示されていることを
確認して、キー列と外部キー列で該当するフィールドを選択します。
※名前は、デフォルトのリレーション1のままで問題なかったです。
d) OKボタンを押してから、閉じます。
※BdpDataAdapterがOpenされていてもこの作業によりCloseされます。
5.DataGrid を2つフォームに配置します。
a) DataGrid1 の DataSource を DataTable1 とします。
b) DataGrid1 の AllowNavigation を False とします。
※これは必要ありませんが、マスター側で詳細が参照できてややこしいから。
c) DataGrid2 の DataSource を DataTable1 とします。
d) DataGrid2 の DataMember を リレーション1 とします。
6.BdpDataAdapter1、BdpDataAdapter2 の Active を True にして、実行します。
一応、マスター/詳細になっています。
(くどいですが、この方法が正解かどうかは不明です。)
DBExpress の時もマスター/詳細の設定がわからなくて、FDelphiで教えて頂いたことを思い出しました。
Helpを、もう少し親切に作ってくれたらなぁ~。
| 固定リンク