|
■マスター/詳細関係 |
|
|
|
●学習内容 |
|
|
|
|
なぜマスター/詳細関係を取り上げたかというとただ、データを並べていればいい場合もありますが、そうでない場合もあります。簡単に言えばデータを表現する幅が広げられるからです。それではいってみましょう。 |
|
|
|
|
|
|
|
●マスター詳細関係とは |
|
|
|
|
データベースアプリケーションでは、複数のデータセットを連携させて動作させることが多くあります。どういうことでしょうか?以下の2つのテーブルは、Cinema_codeでリンクしています。テーブルCinemaがマスターテーブルでテーブルStaffが詳細テーブルです。マスターテーブルの現在のレコードが移動した場合、リンクされている詳細テーブルの現在のレコードも変化します。このような関連をマスター/詳細関係と呼びます。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
●TQueryコンポーネントでマスター/詳細関係の作成 |
|
|
|
|
ではどの様にこの関係を作成したらよいのでしょうか?Delphiでは、データセットをマスター/詳細関係で結合する事ができます。その方法を説明します。 |
|
|
|
|
|
|
|
|
★ |
設定方法 |
|
|
|
@ |
詳細側のDataSouceプロパティにマスタ側のデータソースを設定する |
|
|
|
A |
詳細側のSELECT文のWHERE句にリンクに必要なSQLパラメータを埋め込みます。 |
|
|
|
B |
詳細側のParamsプロパティで、SQLパラメータの値を設定する。 |
|
|
|
|
|
|
|
|
|
★ |
SQLパラメータについて |
|
|
|
|
SQL文を使ってデータセットを作成して、アプリケーションの操作によって検索条件を動的に変化させたい場合があります。もし、検索条件の値が変数であれば実現できそうです。SQL文で変数のような役割をしているのがSQLパラメータです。SQLパラメータをSQL文に埋め込むには、パラメータ名の前にコロン(:)を付けて記述します。今回のプログラムのSQL文を例にして説明します。 |
|
|
|
|
SELECT
a.* , b.staff_genre_name
FROM staff.db a , staff_genre.db b
WHERE a.staff_genre_code = b.staff_genre_code
AND cinema_code = :cinema_code |
|
|
|
|
|
WHERE句にcinema_code
= :cinema_codeと記述してある部分がSQLパラメータが記述されている部分です。SQLパラメータ名には、マスター側のリンクする項目と同じ名前をつける必要があります。そうすることで詳細側のDataSouceプロパティにマスタ側のデータソースを設定してあるので、データセットを開く際マスター側のリンクした項目の値を取得するのでマスター/詳細関係を作成することができます。
|
|
|
|
|
|
|
|
|
|
|
|
|
|