4 返信 最新の回答 日時: Mar 4, 2010 1:13 AM ユーザー:d.o

    計算フィールド(非保存)の計算結果をすぐに表示するには?

    d.o

      タイトル

      計算フィールド(非保存)の計算結果をすぐに表示するには?

      フォーラムに投稿

      みなさんこんにちは

       

      テーブルA、テーブルBがあったとします

      テーブルAとテーブルBがリレーションでつながっていて、テーブルAにはテーブルBのフィールドの値を使った計算フィールド(非保存)があります。

      テーブルAを基にしたレイアウト上にテーブルBのフィールド(テーブルAから参照されて計算に使用される)を表示しておきます。

      このレイアウト上でテーブルBのフィールドの値を変更すると...

       

      2つのテーブルのレコード数が少ないうちはテーブルBのフィールドを変えるとテーブルAの計算フィールドの値が直ぐに変更(再計算)されます。

      2つのテーブルのレコード数が多くなると(数万程度)、テーブルBのフィールドの値を変えてもテーブルAの計算フィールドの値がすぐには更新されません。 

      一度、他のレイアウトに移動してから戻すと更新されています。

      「レコード」メニューから「ウィンドウ内容の再表示」を選んでも値が更新されます。

       

      計算フィールドの値がすぐに変更されるようにしたいのですが、どのような方法があるでしょうか?

       

      一応考えたのは... 

      テーブルBのフィールドにスクリプトトリガの設定をしました。

      OnObjectSaveイベントに対して「ウィンドウ内容の再表示」スクリプトステップを実行させるよう設定します。

      値を変更すると、計算フィールドの値が直ぐに更新されて見えます。

       

      この方法でも良いのかもしれませんが...1レコード更新毎にウィンドウ内容の再表示では重くなるんじゃないかな?と心配しています。もっと簡単な方法があれば是非教えてください。 

        • 1. Re: 計算フィールド(非保存)の計算結果をすぐに表示するには?
          jintaka_1
             Evaluate関数は試されましたか?
          • 2. Re: 計算フィールド(非保存)の計算結果をすぐに表示するには?
            d.o
              

            jintakaさん 

            >Evaluate関数は試されましたか?

            はダメでした

             

            結局、レコード数が多くなるとダメです。

             

            環境はMac版のFilemaker Pro Advance 10です

             

            • 3. Re: 計算フィールド(非保存)の計算結果をすぐに表示するには?
              TailCapeT
                

              こんにちは

               

              私はさんのこの問題により、システムを一度作りなおしています。

              作ったときはいいのですが、使って何年かすると、履歴データが増えた顧客の操作が遅くなってしまい、

              使い勝手がどんどん悪くなったからです。

               

               

              現在は「集計用途の計算フィールドは作らない」という作成時のルール決めにより快適に動作しています。

              計算フィールドの代わりに数字フィールドを作り、既存の計算フィールドの値が変わる動作(データ追加や変更)の際に値の変更を行います。

              単純に対象のレコードを追加したり変更したりに比べ、機構の作成に手間がかかります。

              また、データの追加や変更を行う際にスクリプトを挟まなければならないので、その部分の手間もかかります。

               

              ですが、レスポンスは驚くほど早くなります。

              作り直して良かったなと思っています。 

              • 4. Re: 計算フィールド(非保存)の計算結果をすぐに表示するには?
                d.o
                  

                oztatさん

                 

                レスありがとうございます。

                 

                確かに計算フィールドが沢山あると、レイアウトを切り替える時など重いですよね。

                なるべく、計算フィールドは無しにすることも検討します。

                 

                ところで...

                フィールドの設定で「入力の自動化」を設定し「計算値」を指定して「フィールドに既存の値が存在する場合は置き換えない」のオプションはオフにしたとします。

                これって、計算フィールドみたいに使えますよね?

                計算フィールドとの違いというと、このフィールドに直接数値を入力すれば計算式と違う値も入れることが出来るって事くらいしか思いつかないのですが..。

                他にも違いってあるのでしょうか?

                 

                うまく使えば計算フィールドよりこっちの方がよさそうな気がします。