準備:
  • MasterDetail2.fmp12
  • 自分のソリューション

1)自分のソリューションで、Master Detail を導入したいレイアウトを作成(新規レイアウト)
⌘L ⌘A ⌘C ⌘N

2)(必要であればあとでパートを追加すればいいので、ボディパートのみを残し他のパート(ヘッダ/フッタなど)は削除
レイアウト>パート設定、 して、⌘V
3)テーブルのコピペ
MasterDetail2.fmp12 から テーブル[MasterDetailRows] をコピーし、自ファイルにペースト
MasterDetail2.fmp12
⌘⇧D テーブルタブ選択 MasterDetailRows 選択 ⌘C Esc
自ファイル
⌘⇧D テーブルタブ選択 ⌘V OK



4)フィールドのコピペ
MasterDetail2.fmp12 の [customers::zg_foundCount] [customers::zg_searchField] をコピーし、自ファイルのテーブル内にペースト
MasterDetail2.fmp12
⌘⇧D(フィールドタブでcustomersが選択されていることを確認) 下2行選択 ⌘C Esc
自ファイル
⌘⇧D フィールドタブで当該テーブルになっていることを確認)⌘V


5)リレーション定義
[theTable::zg_foundCount] ≧ [MasterDetailRows::n] のリレーションを定義
4の状態のまま(自ファイル)で、リレーションシップタブ選択、リレーションを設定 OK


6)スクリプトのコピペ
MasterDetail2.fmp12 のスクリプトフォルダ [Modules] をコピーし、自ファイルの [スクリプトの管理]画面にペースト
※ レイアウトを貼り付ける前にスクリプトを貼り付けることが重要
MasterDetail2.fmp12
⌘⇧S Modules フォルダ選択 ⌘C
自ファイル
⌘⇧S ⌘V


7)レイアウトのコピペ
MasterDetail2.fmp12 の customers レイアウトで ⌘A(全てを選択)のあと、Shiftキーを押下しながら、真ん中のフィールド(ポータル部分以外)をドラッグしコピーして、手順1で作った新規レイアウトにペースト
MasterDetail2.fmp12
⌘L ⌘A 、⇧押下しながら不要部分をOmit、⌘C
自ファイル
⌘L ⌘V

※ このときレイアウトを広げて良いかという意味のアラートが出たらOK


8)レイアウト(オフスクリーン)の設定
レイアウト欄外(off-screen)にある以下の設定を終える
REQUIRED
  • PKフィールド:_id だの kp だの
  • zg_foundCount
OPTIONAL
  • ポータルで表示するフィールド
※ 表示させるフィールドが余ったら、余ったフィールドのオブジェクト名を変えておく

9)レイアウト(オフスクリーン)の設定
画面右上のQuick検索用のフィールドの設定(xxxx::zg_searchField)

10)レイアウトのスクリプトトリガを設定
レイアウトのスクリプトトリガを以下のように設定
  • OnRecordLoad:[Trigger: On Record Load]
  • OnRecordCommit:]Trigger: On Record Commit]
  • OnLayoutEnter:[Trigger: On Layout Load And Enter Browse Mode]
  • OnModeEnter:[Trigger: On Layout Load And Enter Browse Mode]

11)スクリプト [Reset MasterDetail Rows Table] を一度回す
※ Virtual List (VL)では 1,000レコードずつ作成するが、このスクリプトの中で変更できる

その他の注意点
VLのポータルに表示されない場合はとりあえず、一旦閉じてもう一度開くと幸せになれたりする



参考URL
Master Detail - Modular FileMaker
MasterDetail 2.0 - Modular FileMaker
FileMaker Master Detail 2.0 Video - geist interactive