|2| インターフェースファイルからの入力

|2| インターフェースファイルからの入力

by Guantare.com

レイアウト作成 実習管理_UI

実習管理_UIで新規レイアウトを作成し、テーブルをa01_学生にして全てのフィールドを配置します。
レイアウトモードに切り替えて「新規レイアウト/レポート…」を選択すると実習管理ファイルのテーブルのレイアウトを作成できます。
性別のフィールドはラジオボタンにしていますが、値一覧は実習管理UIに作ります。

 

数例のレコードを作成します。インターフェースに利用しないデータの確認が目的のレイアウトでは表形式の表示にすることが多いです。これはメニューバーの表示から表形式を選択します。

 

同じようにしてb01_実習のレイアウトを作ります。数例のレコードを作りますが、対象事業区分というのは実習の対象となる事業所の区分になります。具体的には保育園、社会福祉施設、幼稚園になります。社会福祉施設は長いので単に施設としてあります。これも実習管理_UIに値一覧を作ります。

 

同じようにして実習先のレイアウトを作り数例入力しておきます。

 

リレーション作成 実習管理_UI

 

リレーション作成前にテーブルごとに色分けします。学生と実習生のテーブルは関係が深いので青の濃淡にしてあります。テーブルが増えていくと色分けも難しくなり、似通った色が増えると却って見分けにくくなるのですが、主要なテーブルには色をつけるようにしています。これも私の流儀。

FileMakerでファイルを作成する前の図のようにリレーションを作ると上のようになります。しかし、このようにリレーションを作り、テーブルが増えてリレーションも増えると段々とゴチャゴチャしてきます。

 

上のようにリレーションを作り変えます。アンカー・ブイという方法です。アンカーは錨でブイは錨に繋がれた浮き玉からきています。

リレーションシップグラフに表示されるテーブルはテーブルオカレンスと言います。TOと略します。TOは幾つでも複製することができます。実際にデータが格納されているテーブルではなく、リレーションを作るためのアイコンのようなものと考えられますが、データとデータの関連付けはTOの関連付けを通して行われるのでTO同士をどのように関連させるかが重要になります。a01_学生のTOを選択し、複製ボタンで複製します。a02_実習生TOのa02_学生idとa01_学生TOのa01_学生IDとの間にリレーションを作ります。複製したa01_学生 2 TOの名前をa02_a01_学生に変更します。アンカー側のTO名の記号を先頭に入れるようにしています。ここでも命名規則が大事で頭の中が混乱しないように工夫が必要です。

それぞれのテーブルのレイアウトはTOと関連付けられていて、配置されるフィールドで正しい値が表示されるのは関連付けられたTOのフィールド、そのTOとリレーションで結ばれているTOのフィールドということになります。慣れるまでは間違いやすいので気をつけてください。
原則としてアンカーとなるTOだけでレイアウトを作るようにします。

b01_実習、c01_実習先も同じように複製して名前を変更しておきます。

テーブルを作成し、最初にリレーションシップグラフに表示されるTOをアンカーとしていきます。というのも最初に表示されるTOはテーブル名と同じ名前になっていてテーブル名を変更すると自動的に変更されるからです。同じ名前のTOは作成できない仕組みになっていて、テーブル名を変更しても変わらないのです。

実習生、学生、実習、実習先の関連付けができましたが、実際にどうやって実習生のレコードを作ればいいのでしょうか?

実習を管理する上では実習名と年度を組み合わせて管理していくのがいいのではないかと思います。過去の実習や進行中の実習の状況を調べたり、翌年度の実習準備をするということを考えると年度ごとに実習をまとめて表示し、その中から特定の実習を選択することにします。

ここでui01_実習管理テーブルにui01_g_年度という数字タイプのグローバルフィールドを作成します。

 

ui01_実習管理TOのui01_g_年度とb01_実習TOを複製し、b01_実施年度をリレーションで結びます。b01_実習TOの名前を命名規則に沿って変更します。

 

ui01_実習管理TOのレイアウト上にui01_b01_実習TOのポータルを作ります。
ui01_g_年度フィールドに年度を入力すると、その年度の実習が表示されます。

 

同じようにしてui01_実習管理TOのui01_g_テキストとa02_実習生TOのa02_実習idを結びつけます。
ui01_実習管理TOのレイアウト上にui01_a02_実習生TOのポータルを追加します。

 

スクリプト作成

年度ごとの実習を選択し、a02_実習生のレコードを作成するためのスクリプトを組みます。
まず、実習を選択するスクリプトを作成し、ui01_b01_実習TOのポータル上にボタンを配置します。

 

実習を選択するスクリプトです。エラー処理などしていないプリミティブなものです。選択した実習のIDを取得してui01_g_テキストに格納するという簡単なスクリプトです。「実習を選択」という名前にしました。

スクリプトにはどのような動作をさせているのか分かるようにコメントは入れておいた方が後々の混乱を避けることができます。

 次に実習生のレコードを作成するスクリプトを作成します。実際には全学生の分を作成するのではなく、対象者にしぼらなければならないのですが、基本的な動きを理解する必要があるので今回は学生全員と仮定します。

 

スクリプトの概略としては実習生のテーブルに学生一人ひとりのレコードを作成し、実習IDを格納するというものです。

 

ui01_実習管理TOのレイアウト上にボタンを配置して実行すると実習生のレコードができます。このままでは学生の氏名が表示されません。実習生のテーブルには氏名のフィールドがないからです。学生IDがあるのでコンピュータは困りませんが、人間には識別できず不親切です。

 

氏名を表示する方法には学生テーブルにリレーションで結びつけて表示させる方法と実習生のテーブルに氏名のフィールドを作っておいてレコード作成時に学生IDと同時に氏名も格納させる方法です。

学生が改姓した場合、リレーションで表示させる方法は学生テーブルに関連づけられたテーブルでその学生の全ての氏名が変更されて表示されます。氏名フィールドに格納する方法だと改姓以降に作成されたレコードだけが新しい氏名になりますが、必要なレコードだけ再入力すれば変更できます。

請求書などでは商品マスターに単価が入力されているのが普通ですが、割引があったり、価格改定があったりするのでフィールドを作り、そこに格納する方が理にかなっています。

ここではリレーションによって表示することにします。ui01_a02_実習生TOのa02_学生idとui01_a02_a01_学生TOのa01_学生IDをリレーションで結びます。実習生と学生の関連は 多 :1 の関係になるので複数の学生レコードと結びつくことはありません。

 

ui01_実習管理TOのui01_a02_実習生TOポータル内にui01_a02_a01_学生TOの姓と名のフィールドを配置すると氏名が表示されます。

 

実習生レコード作成 実習管理_UI

 

実習先を表示させる時、施設を対象とした実習で保育園を含めて表示すると余計な実習先が増えるだけですから、施設だけに絞りたいところです。
ui01_実習管理テーブルにui01_g_事業区分というテキストタイプのグローバルフィールドを作りui01_c01_実習先TOのc01_事業区分とリレーションを結びます。
ついでにui01_g_テキストのフィールド名をui01_g_実習IDに変えておきます。

実習生と実習先を結びつけなければなりませんが、氏名と同じように実習先の名称を表示させるためにui01_a02_実習生TOのa02_実習先idとui01_a02_c01_実習先TOのc01_実習先IDをリレーションで結びつけます。

 

「実習を選択」スクリプトの中に事業区分をui01_g_事業区分フィールドに格納するスクリプトを追加します。

 

c01_実習先IDを実習生テーブルのa02_実習先idに格納するスクリプトを作成します。このスクリプトは1個では完結せず、2個のスクリプトに分かれます。一連の動作なのでスクリプト引数で分けています。

まずは実習先IDを取得します。次のスクリプトで実習生を選んでから実習生テーブルのa02_実習先idフィールドに実習先IDを格納するという2本立てになります。グローバル変数を使いますので、その都度グローバル変数を空にしておく方がいいでしょう。

 

ui01_c01_実習先TOのポータルに選択ボタンを、ui01_a02_実習生TOのポータルに決定ボタンを置きます。実習先を決めたら選択ボタンで実習先IDを取得し、実習生を選んで決定ボタンで実習先IDを格納します。

ui01_a02_実習生TOポータルにui01_a02_c01_実習先TOのc01_名称フィールドを配置すると実習先の名称が表示されます。

 

実習管理ファイルのデータ確認

 

実習管理_UIファイルの管理画面
実習管理ファイルの管理画面

 

ここまで実習管理_UIファイルを使って入力してきましたが、実習管理_UIのデータベース管理を開いてもui01_実習管理のテーブルだけで1レコードのままです。

実習管理ファイルのデータベース管理を開くとa01_学生に3レコード、a02_実習生に3レコード、b01_実習に3レコード、c01_実習先に5レコード作成されています。

 

実習管理ファイル_a01_学生テーブル
実習管理ファイル_b01_実習テーブル
実習管理ファイル_c01_実習先テーブル
実習管理ファイル_a02_実習生テーブル

それぞれのテーブルを開いてみるとui01_実習管理で入力したデータがきちんと格納されています。

 

インターフェースファイルのメリット

私はこのようにデータのファイルとインターフェースのファイルを分けることを分離型というのではないかと思っていますが、間違っているかもしれません。

2つのファイルに分けることの利点は2つあります。

データとしてのリレーションとインターフェースとしてのリレーションを分けることができるので頭の中を整理しやすくなること。

FileMakerはサーバ稼働中でもフィールドの追加、計算フィールドの修正やスクリプトの修正などの変更ができますが、クライアントが触っている時はできませんし、変更中はクライアントが入力できない部分が出てきます。やはり一時的にサーバを停めなければなりません。
インタフェースの修正であれば、そのファイル自体にはデータが含まれませんのでファイルだけを交換すればすみます。サーバの停止時間を最小限にできます。

中堅の印刷会社で働いている頃、データベースを稼働させ始めた頃はあまり使ってくれずに苦労しましたが、メンテナンスの時間を週1回、1時間取ることができました。段々と便利さに気づくようになり使う人が多くなりました。営業は昼休みの取り方もまちまちで、残業も多くメンテナンス時間が取れなくなりました。日曜出勤するしかなかったのですが、工程管理を工場でも使い始めるとそれも難しくなってしまいました。というのも工場は交代制で夏休みと正月以外は毎日24時間操業していたからです。

出来るだけデータ部分とインタフェース部分を分けることをおすすめします。


自宅近くの畑。色々な野菜が育てられいて、この日は人参の葉っぱがキラキラと光っていました。
iPhone 6S 4.15mm ISO25 1/500 F2.2 P
jpg
2018/11/3 Kodaira City