前回からの続きです。
2.レイアウトの棲み分け
(前回の記事より)
・レイアウトとは、一般的なプログラム単位に相当するもので、データ操作を行うために必須のものです。
・プログラム一覧表のプログラム名にFileMakerでは、レイアウト名を書くことになると思います。
2.1.業務名称と、それに対応するプログラム
一般的な例として業務単位に主となるプログラム(レイアウト)、それに利用されるサブプログラム(レイアウト)の構成を検証します。
業務名称 主プログラム サブプログラム
得意先マスタ保守 得意先マスタ保守 得意先検索
住所検索
部署検索
担当者検索
受注入力 受注入力 受注検索
得意先検索
品目検索
在庫照会
在庫照会 在庫照会 品目検索
このように、主となるプログラムにはそれらを補助するサブプログラムが複数構成されています。
この中でも、「在庫照会」プログラムは、主プログラムが、「受注入力」のサブプログラムとしても構成されています。
「在庫照会」プログラムと、他のサブプログラムの違いは何でしょうか。
それは、プログラムが終了する際に、値を返すものと、値を返さないものの違いと見ることができます。
注)あくまでも一般的な仕様の場合です。
「得意先検索」は、実行し、検索結果にて該当する得意先を指定された場合は、その得意先コードを返し、指定されず、キャンセルされた場合は、何も返さず、CLOSEします。
「在庫照会」は、実行される際に、呼び出し側のプログラムで引数(品目コード・年月)を受け取り、それらの在庫残高および当該月の入出庫(受払い)を明細として表示します。終了する際は何も返さず、CLOSEします。
2.2.まとめ
☞ 主プログラム(レイアウト)
業務メニューに設定される、業務の目的によって利用されるものです。
・プログラム起動の際、引数を受け取る場合がある。
・プログラム終了の際に、値を返さない。
☞ サブプログラム(レイアウト)
業務メニューには設定されない、業務の補助を目的とし、共通に利用されるものです。
・プログラム起動の際、引数を受け取る場合がある。
・プログラム終了の際に、値を返す。
3.TO(テーブルオカレンス)とリレーションの棲み分け
(前回の記事より)
・TOとは、実テーブルを投影し、分身として生成された実データを持たない仮想テーブルと言えます。
・リレーションとは、個々のレイアウトの目的毎に作成したTOを、関連付けしたデータモデルと言えます。
3.1.レイアウトに指定するTOおよびリレーション
ここでのレイアウトは、主プログラム(レイアウト)、サブプログラム(レイアウト)の区別はありません。
以下は、主プログラム(レイアウト):「得意先マスタ保守」で使用するTOおよびリレーションの例です。
[得意先マスタ]
・得意先コード
・得意先名 [社員マスタ]
・担当者コード ----> ・社員コード
・社員名 [部署マスタ]
・所属部署コード ----> ・部署コード
・部署名
以下は、サブプログラム(レイアウト):「得意先検索」で使用するTOおよびリレーションの例です。
[得意先マスタ]
・得意先コード
・得意先名 [社員マスタ]
・担当者コード ----> ・社員コード
・社員名 [部署マスタ]
・所属部署コード ----> ・部署コード
・部署名
☞ 「得意先マスタ保守」で使用するTOおよびリレーションは、「得意先検索」で使用するものと同じ内容になります。
この時、TOおよびリレーションの作成は一つで良いのか、またはレイアウト毎に区別して作成するのか?
答えは、後者となります。
OracleなどRDBMSを使用し、View表を利用しない場合、SQL文でのfrom句には実テーブルを記述します。ゆえに、得意先マスタ保守で使用するSQL文、得意先検索で使用するSQL文も同じ内容になります。
3.2.まとめ
☞ TOおよびTOにて関連付けするリレーションは、個々のレイアウト単位に作成し指定します。
4.スクリプトの棲み分け
(前回の記事より)
・スクリプトを起動する基はレイアウトですが、スクリプトから別のスクリプトを実行できます。
・スクリプトとは、処理を自動化および制御するためにユーザーが記述するプログラムです。
注)ここではサーバーサイドスクリプトは対象外です。
4.1.棲み分けの要因
①レイアウトから直接呼び出されるスクリプト
②別のスクリプトから呼び出されるスクリプト
「得意先マスタ保守」を例に検証してみます。
(1)新規ボタンが押下された時に、以下のスクリプトを実行する。
(1)-1.ワークテーブルからログインしたユーザーIDと同じレコードを全て削除する。
(1)-2.得意先マスタから[得意先コード]のMAX値を取得する。
(1)-3.新規レコードをワークへ挿入し、[得意先コード]へMAX値+1を代入し確定する。
(1)-4.カーソルを得意先名にセットする。
注)新規ボタンはFileMakerのDefaultの「新規レコード」ボタンではなく、ユーザーが配置したボタン
この例では、以下のように構成されます。
①レイアウトから直接呼び出されるスクリプト :(1)
②別のスクリプトから呼び出されるスクリプト :(1)-1、(1)-2、(1)-3、(1)-4
☞ (1)-1.のスクリプトは、他の①から呼び出される可能性もあります。
(2)終了ボタンが押下された時に、以下のスクリプトを実行する。
(2)-1.編集中かどうか確認する。
・(2)で、編集中の場合、メッセージ表示し、応答後に現在のスクリプトを終了する。
・(2)で、上記でない場合、以下を実行し、ウインドウを閉じる。
(1)-1.ワークテーブルからログインしたユーザーIDと同じレコードを全て削除する。
4.2.まとめ
①レイアウトから直接呼び出されるスクリプト
☞ そのレイアウトのみで使用され、レイアウトから直接呼び出される。
②別のスクリプトから呼び出されるスクリプト
☞ そのレイアウトのみで使用され、スクリプトから呼び出される。
☞ 別のレイアウトでも使用され、スクリプトから呼び出される。(共通)
以上、それぞれのオブジェクトの棲み分けについて書いてみました。
ここでの棲み分けが、命名規則の基になります。
FileMakerではそれぞれのオブジェクトに対して日本語表記ができ、直感的な理解が素早くできます。但し、スクリプトワークスペースで、各スクリプトの記述を確認している時、日本語表記されているオブジェクトが、TOなのか、スクリプトなのか、レイアウトなのかが一瞬で判断できないこともあります。
ゆえに、それらのオブジェクト名の最初の1文字目に、識別子としたものを編集した方が良いかもしれません。
次回は、命名規則の具体的な内容をご紹介します。
以上です。