初心者にもわかるファイルメーカーの
使い方

サーバーに上がったファイルのグローバル計算フィールドに関して

2018-09-26 |  

 

弊社のFileMakerチームは削除ロジックをいわゆる論理削除で組むことが多いです。

論理削除はレコード自体を直接削除する物理削除ロジックとは違い、直接データを消すことはしません。
各テーブルにハウスキーピングとして削除フラグを用意し、削除されていれば”1”を、削除されていなければ”0”を保存します。

 

各画面の表示の際に削除フラグが1のレコードを除外して表示することで、ユーザから見た時に恰も削除されたかのように見せる削除ロジックです。

今回はそんな論理削除のリレーションシップで戸惑った事案です。
論理削除では常に削除フラグを意識して構成します。
値一覧の作成に関しても削除された項目は表示されないようにしないといけないので動的値一覧を多様します。
動的な値をとるのにリレーションシップ上の親テーブルに常に”0”を保存するフィールドを用意し、それと子テーブルの削除フラグをリレーションさせることで子のテーブル上で削除されていないレコードのみ動的に値一覧を取得します。

 

 

FileMaker上で常に同じ値を持っておいて欲しい場合に良く使う手が計算フィールドをグローバルに格納するというテクニックです。
計算式に”0”を記入することで常に0を保存してくれます。

 

しかし、ローカル環境ではこの手法は特に問題なく動くのですが、サーバーにアップロードしたファイルでこの手法を使うと動いたり動かなかったりするのです。

 

なぜ動いたり動かなかったりがあるのかをよくよく調べてみると、グローバルに設定したタイミングがアップロード前か後かで変化するようでした。
FileMakerあるあるになりますが、アップロード前にグローバル格納しているフィールドに値が入った状態でアップロードするとその値がデフォルトで入ってしまう現象がよく見られます。
その事と関係があるのかはわかりませんが、アップロード前にグローバル設定しているとデフォルトが”0”をキープし、アップロード後に同じように計算式をグローバル格納しても”Null”をデフォルトにしてしまいリレーションが切れてしまうようでした。
対策として、計算フィールドから数字フィールドに切り替えてグローバル格納しログインスクリプト上でフィールド設定させる事で回避させました。

 

ありがちですが、気づくのに少し時間のかかる事案でした。