AnsweredAssumed Answered

自動入力でリレーション先を集計する計算式を再計算する方法はないでしょうか

Question asked by macchaka on Mar 11, 2017
Latest reply on Mar 12, 2017 by user19752

リレーション先をsum関数で自動計算した数値タイプフィールドがあります。

集計目的なので、リレーション先は常にデータが変わります。

 

例えば、リレーション元は顧客マスタ。リレーション先は入金履歴トランのようなものです。

毎日顧客単位で入金累計とそれを使った計算フィールドを、データ書き出ししなければならないと想定します。

(例えですので、この点は要件と仮定します)

 

計算フィールドで行いたいところですが、集計は計算値の保存ができませんので、それを使った計算フィールドも保存が出来ず、結果として処理が遅くなる原因になります。

そこで、処理速度を高めるために入金累計は数値フィールドで格納しておきたいと考えます。そうすれば、計算フィールドは同じテーブル内の計算で済み、かつ計算結果を保存しておくことができるからです。

 

他の回答では「同じ計算式で全置換すればいい」というものもあったのですが、それではそもそも「自動計算」を設定する意味が半減し、今回の例では、(自動計算の設定を使わず)フィールドの全置換だけで済ませばいいということになります。

 

ある外部サイトでは、フィールド内容の再ルックアップを実行すればいいというものもあったのですが、「ルックアップ」ではないので、「ルックアップするフィールドが見つかりません」というエラーで実行できません。

 

レコードが作成されたときには自動計算し、(リレーション先の変更が検知できず自動再計算できないという点は理解しているので)、リレーション先の更新時にトリガーを引けば再計算されるということをしたいのですが、本当にFileMakerにその機能はない(フィールド置換で処理するしかない)のでしょうか。

 

繰り返しになりますが、トリガーが引かれたときにフィールドの全置換を実行すればよい…というのは、実効性では理解しますが、自動計算の定義がされているのに、その再計算がリレーションキーの書き換えでもしないとできず、同じ式を使って全く別の機能で補うというのは、OAOO原則の観点で納得できないのが、質問の趣旨です。もし計算式が変わると、フィールド定義とスクリプトの2箇所修正しないといけないわけなので。

 

されども、できないのならそれがソフトウェアの仕様ですから、納得します。

 

ちなみに、バージョン依存はないと思いますが、今回の質問にあたり確認環境としたのはFM14です。

Outcomes