FileMakerProに関しては初心者なので実際にはどのように動作してくれるのかが不明な点がある。
ココがポイント
今回は、リレーションとルックアップに関して実験をしてみました。
前準備
前回に実験したA_tableがありますが、今回の実験には関係ありません。
今回は、B_tableと在庫管理テーブルでの実験になります。
あらかじめ、B_tableには、5件のレコードを入れてあります。
在庫管理テーブルの方には、何も入っていません。
IDでリレーションされた別テーブルフィールド入力
まずは、B_table画面からIDの一致した在庫フィールドに値を入力するにはどうしたらいいのか?の実験です。
テーブル名を「在庫管理」テーブルに変更してから、フィールド「在庫」をレイアウトにドラッグ&ドロップするだけでした。
ブラウズモードから、在庫フィールドを見ると、「::在庫」という表示になっており、これが別テーブルからのリンク表示だって意味かどうかはわかりませんが、判別することができます。
とりあえず、ID1と5に、それぞれ10を代入してみました。
在庫管理テーブルの方では、自動でID1と5が追加されて、在庫も入力されていました。
リレーションにて、「レコードの作成を許可」しておけば、自動でレコードを作成してくれるようです。
もちろん、「関連レコード削除」にもチェックしている場合には、B_tableのIDが消されたら、在庫管理テーブルの関連レコードも消されることになると思います。
在庫テーブルをルックアップ
まだ初心者なので、この在庫管理からの在庫フィールドと、ルックアップしたフィールドの違いが理解できません。
ちょっと実験をしてみたいと思います。
ルックアップ設定した「在庫」フィールドを追加しましたが、データを引っ張ってきません。
そこで、メニューバーから、「レコード>>フィールド内容の再ルックアップ」を実行しましたがエラーがでました。
調べて見ると、リレーションしているキーがIDなので、カーソルをIDに持って行っておかないとエラーになるようです。
IDにカーソルを持って行って再度実行すると下記の様なメッセージがでました。
検索しないで全レコード対象にすると出るようです。
これで、B_tableの「在庫」フィールドの値が、ルックアップで入力されました。
レコード追加した時のルックアップ値
レコードを追加したらどうなるのか?の実験をしてみました。
IDを入れるだけで、「在庫」フィールドもルックアップされていました。
在庫数を変更した時のルックアップ
ID1の在庫を10から20に変更してみました。
一番上の、ID1の在庫は瞬時に変わりましたが、ルックアップされている在庫の方は変わりません。
そこで、「レコード>>フィールド内容の再ルックアップ」を実行すると、
一番上のID1だけの在庫しか変更されません。なんで?
そこで、カーソルを、ID1に持って行ってから実行すると、一番下のID1も変更されました。
「レコード>>フィールド内容の再ルックアップ」を実行する時は、カーソルの位置が関係するということですね。
ID1だけ絞ってからの実行すれば、全部の在庫が再ルックアップされました。
まとめ
同じ在庫を表示させる方法ですが、どういう使い分けをしたらよいのでしょうか?
自分が勝手に考える使い分けとしては、わざわざフィールドを増やしてルックアップするよりかは、別テーブルのフィールドを表示させてた方がリアルタイム表示なので使いやすいと思いました。
ただ、マスタから値を引っ張ってきてレコードを作成するような場合は、その時のマスタの値を残して置きたいケースもあるかと思います。
例えば、ある会社から購入した部品として、その時に発注したレコードがあったとします。
マスタの購入先会社名を変更したら、過去のすべてのレコードが変わってしまったら困るケースもありますよね。
その時は、ルックアップの方がいいですね。