関連フィールドの配置場所の決定
関連テーブルのフィールドは、レイアウトに直接配置するか、または関連レコードを表示するポータル内に配置することができます:
- レイアウトに直接配置した場合:関連フィールドをレイアウトに直接配置すると、リレーションシップの条件に一致する関連レコードが複数ある場合でも、最初の関連レコードのデータだけが表示されます。(この場合、リレーションシップでソート優先順位が指定されているかどうかによって、表示される最初の関連レコードが異なります。)
- ポータルに配置した場合:関連フィールドをレイアウト上のポータルに配置すると、リレーションシップの条件に一致するすべての関連レコードのデータが表示されます。
たとえば、「請求書」データベースの「請求書」レイアウトで、次のような操作を行うことができます:
- 「顧客」データベースのデータを表示する請求書に、顧客番号や連絡先情報などを表示する関連フィールドを配置する。この場合の照合フィールドは、「顧客番号」フィールドです。「顧客」データベースには、それぞれの顧客番号に対応するレコードは 1 つずつしか存在しないため、請求書の各関連フィールドには、その顧客のデータが表示されます。
- 「受注履歴」データベース内の「受注日」フィールドの最新の日付を表示する関連フィールドを請求書に配置する。この場合も、照合フィールドは「顧客番号」フィールドです。顧客が複数回発注した場合は、その顧客の顧客番号と一致するレコードが「受注履歴」データベースに複数存在します。リレーションシップを定義するときに、「受注日」フィールドにソート順を定義しておけば、レイアウトに直接配置された (ポータル内ではなく) 関連レコードに最新の受注日が表示されます。
- 受注した各品目のデータ (製品 ID、製品名、単価など) を表示する関連フィールドを請求書に配置する。この場合の照合フィールドは「受注 ID」です。ほとんどの場合、請求書には複数の製品が記載されるため、複数の関連レコードを表示できるようにポータルを作成します。ポータル内の各行には、1 つの関連レコードとともに、「明細」データベースから選択した関連フィールドが表示されます。
FileMaker Pro のポータル内の関連フィールドへの参照の評価方法
ポータルに関連レコードを表示する関連フィールドを配置する場合、表示する関連データは、ポータルのテーブル内のレコードまたはレイアウトのテーブル内のレコードのいずれかを起点として評価されます。どちらを起点とするかによってフィールドに表示される関連データが変わるため、これは非常に重要です。
どちらの開始点を使用するかは、FileMaker Pro ではリレーションシップグラフの 2 つのテーブル間のリレーションシップのパスに基づいて決定されます:
- レイアウトのテーブル
- フィールドのテーブル (配置されたフィールドが含まれるテーブル)
レイアウトのテーブルからフィールドのテーブルへのリレーションシップのパスにポータルのテーブルが含まれる場合は、ポータルのテーブル内のレコードが開始点になります。それ以外の場合は、レイアウトのテーブル内のレコードが起点になります。
たとえば、次のリレーションシップグラフは、学校の登録データベースを示しています。このデータベースは、教員、クラス、および学生のテーブルと、各クラスにどの生徒が登録しているかを示す登録テーブルで構成されます。また、教職員から担任を各学生に割り当てる担任テーブル (教員のテーブルオカレンス) もあります。
あるクラスに登録している学生を表示する次のようなレイアウトを検討します。このレイアウトのテーブルは「クラス」で、ポータルのテーブルは「学生」です。
次の表は、このポータルに配置されている、異なるテーブルからの 4 つのフィールドの起点が FileMaker Pro ではどのように決定されるかを示します。
配置されているフィールド |
レイアウトのテーブルからフィールドのテーブルへのパス |
パスにポータルのテーブルが含まれるかどうか |
起点 |
コメント |
学生テーブルの名前フィールド |
クラス - 登録 - 学生 |
はい |
ポータルのレコード |
配置されているフィールドは、ポータルのテーブルのものです (非常に一般的な方法)。フィールドには、登録済みの学生がポータルの各行に表示されます。 |
担任テーブルの名前フィールド |
クラス - 登録 - 学生 - 担任 |
はい |
ポータルのレコード |
配置されているフィールドには、各学生の担任がポータルの各行に表示されます。 |
教員テーブルの名前フィールド |
クラス - 教員 |
いいえ |
レイアウトのレコード |
配置されているフィールドには、各学生に対して関連する最初の教員の値ではなく、クラスの教員がポータルの各行に繰り返されます。 |
クラステーブルのクラス名フィールド |
クラス |
いいえ |
レイアウトのレコード |
配置されているフィールドは、レイアウトのテーブルのものです (一般的ではない方法)。フィールドでは、クラス名がポータルの各行で繰り返されます。これは、レイアウトのポータル外に「クラス名」フィールドが含まれる場合は、重複することになります。 |
FileMaker Pro では、ポータルに配置されているフィールドに加え、次の方法も使用してポータル内のフィールドへの他の参照に対する起点が決定されます:
- 値一覧: フィールドの関連する値のみが含まれるように値一覧が定義され、この値一覧を表示するようにポータル内のフィールドの書式が設定されている場合(値一覧に表示される値は、起点によって決まります)。
- 計算式: ポータルがアクティブなときにスクリプトの計算式がフィールドを参照する場合。
通常、表示する正しい関連データは FileMaker Pro によって決定されます。ただし、他のテーブルとリレーションシップが含まれるようにリレーションシップグラフを変更してから、ポータルで参照される関連フィールドを変更すると、起点を変更することができます。