前回は「初めてのカスタムAppづくり」
1、設計
2、ファイル新規作成
3、テーブル作り
4、フィールド作り
5、関連(リレーション)を考える
6、テーブルオカレンス作り
7、レイアウト作り
8、ポータルで値を表示させる
の1〜4をまとめました。
👉初めてのカスタムApp 8ステップ【1〜4】
今回は5〜8について取り上げます💡
関連(リレーション)を考える
レイアウトごとにTOGを作ることになります。
今回は
・「顧客入力画面」「顧客詳細画面」「顧客一覧画面」
・「スタッフ入力画面」「スタッフ詳細画面」「スタッフ一覧画面」
・「商品入力画面」「商品一覧画面」
・「来店入力画面」
を作ろうと思います!
ということは『顧客』『スタッフ』『商品』『来店』がコンテキストになるようなTOG(テーブルオカレンスグループ)を作る必要があります。
※TOをリレーションで繋げることで関連した他のテーブルの情報をレイアウト上に表示することができるようになります。
なんでレイアウトごとに、複数のTOGを作らないといけないの?
と思うかもしれません
↓↓↓
どのTOをコンテキストにするかで、関連テーブルから表示されるデータが変わって来るからです!
例
顧客(コンテキスト)⇨来店⇨スタッフ
この時に表示されるスタッフの情報は…特定の顧客が来店した際の担当した特定のスタッフ情報
スタッフ(コンテキスト)⇨来店⇨顧客
この時に表示されるスタッフの情報は…複数(全て)のスタッフ情報
テーブルオカレンス作り
考えたリレーションを元にTOを作って繋げたTOGを作っていきます。
TOの命名規則に従って、後からでも分かりやすいTO名をつけていきます。
TOG名_ソーステーブル名_説明
例




<その他テーブルオカレンス作りで今回学んだこと>
・元となるテーブルは触らない。
・テーブルオカレンスの新規制作時のデータソースは元のテーブルを指定する。
・テーブルオカレンス⇨全てのデータ(ソーステーブルの)があるが、その先他のテーブルオカレンスで表示されるデータはリレーションを通過した一部となる。
レイアウト作り
続いて、TOGグループを元にレイアウトを作っていきます。
1、⌘L レイアウトモード
2、[レコードを表示:] どのテーブルオカレンスの出口にレイアウトを作成するか。
※顧客詳細画面を作りたいなら、「顧客画面_M顧客」
顧客一覧画面を作りたいなら、「顧客画面_M顧客」
来店詳細画面を作りたいなら、「来店画面_J来店」
3、[レイアウト名:]レイアウト画面の名前をつける。
顧客詳細 顧客一覧 顧客入力 。。。
4、どこに表示させて使うか「コンピュータ」「タッチデバイス」「プリンタ」のいずれかを指定。
5、表示形式を指定
「フォーム」「リスト」「表」「レポート」のいずれかを指定。
6、[完了]
7、フィールドをレイアウト上に配置していく。
<その他レイアウトモードで今回学んだこと>
●値一覧
・値一覧「フィールド値を使用」の場合
1つ目に__ID、2つ目にフィールドの値を設定する。
よって、上記を利用するフィールド名は_○○IDとなる。つまり外部のIDを入力する外部キーになる。
例 「来店画面_J来店」TO に作った「_MスタッフID_予約受付」フィールドに値一覧の設定をする。
1、値一覧の編集 ダイアログ
2、[フィールド値を使用][フィールド指定]
3、[最初のフィールド値を使用] 「Mスタッフ」を指定。 「主キー」を指定。
[2番目のフィールドの値も表示] 「Mスタッフ」を指定。 「スタッフ名」を指定。
4、[すべての値を含める]をチェック。

主キーを使って関連レコードのフィールド値を一覧表示させるため
リレーションで繋がなくてもリレーションを繋いだように他のTOから値を表示させることができる。
●入力が保存されるタイミング
FileMakerではデータが保存されるタイミングは、レイアウト上のフィールドからカーソルが離れて他を指定した時。
※他のプログラミング言語などでは、入力フォームの送信ボタンなどがクリックされた時に、項目がまとめて保存されるが、FileMakerではフィールド1つずつが保存されていく。
ポータルで値を表示させる
ポータルを使ってリレーションで関連付けた他TOの値を表示させます!!!
1、⌘L レイヤーモード
2、画面上部、ポータルの作成ボタンクリック。
選択範囲でドラックしながら、ポータルサイズを指定。
3、[レコードを表示:]どのTOから見た値を表示させたいか
4、[OK] その他の設定は割愛します。
ポータル上に置くフィールドは、リレーションで繋がれているどのフィールドでも設定できます。
しかし!!! [レコードを表示:]どのTOから見た値を表示させたいか を設定した通り
このポータル上に置いたフィールドは、このTOから見た値になります。
つまり、[レコードを表示:]で設定したTOが違うと、同じフィールドを置いたとしても表示される値の結果が違ってくる。ということになります。
※それぞれのTOの意味をきちんと捉え、どんな結果が欲しいのか分かっていないと、希望と違う表示結果になってしまい、システム上の大きな問題になりかねません💣
<その他ポータル設定で今回学んだこと>
●「リレーションシップの編集」ダイアログ の設定
ポータルに関わる設定です。
・下部の設定

※リレーションシップ グラフは左に置いたテーブルオカレンスをコンテキストに右に見ていくため(右にデータが関連していく)、基本的に右側にしかチェックは入らない。
■[このリレーションシップ を利用して、このテーブルでのレコードの作成を許可]
左にある「顧客画面_M顧客」TO上に右の「顧客画面_J来店」TOのポータルを置いた場合、「顧客画面_J来店|NewSort」のポータルにあるフィールドに新規で値を入力すると、自動でJ来店のレコードが作成され、1レコード増える。
※ ポータルにあるフィールドに新規入力は厳密には「ポータルの最後の行で」という操作が必要。
■[他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除]
左にある「顧客画面_M顧客」TO上に右の「顧客画面_J来店」TOのポータルを置いた場合、M顧客レコードを削除すると関連しているJ来店のレコードが削除される。
※[他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除]を設定してしまうと、TOに関係なく、同じテーブルが関連しているリレーションで実行されてしまう。
(データに広く影響するので、差別化するため、DB管理として別のテーブルオカレンスを作成する。)
※あくまでも影響するのはM顧客レコードを削除したときのみ。J来店のレコードを削除してもM顧客レコードは削除されない。(TOGは左から右の関係)
●命名規則
・[このリレーションシップ を利用して、このテーブルでのレコードの作成を許可]
この設定をしたTOには「顧客画面_J来店|New」と記述。
・[レコードのソート]
この設定をしたTOには「顧客画面_J来店|Sort」と記入
・[他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除]
DB管理で新たなテーブルオカレンスを作成し、「DBM顧客_J来店|Del」
以上で初級編を終了後、カスタムAppを作った際のまとめを終わります。
初級編のテキストでは、スクリプトや索引、セキュリティなど、他にも学んだ内容はありましたが、理解した程度であって、使用できるほどのレベルではないと考えております。
次回からテキスト中級編を学び、より理解が深まった時点で、まとめて実践復習してきたいと思っています👍
コメント