みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Filemaker18をクラサバ環境で利用しています
表現はおかしいかもしれませんが
リレーションが開通するのが遅く、関連レコードの値の取得に時間がかかっています。
これを強制的に早くすることはできるでしょうか?
ファイルはA、B、Cとあり、構成は下記の通りです。
※テーブルではなくファイルで、下記「ファイル」は「ファイル内のテーブル」の意味で表記しています。
ファイルA ファイルB ファイルC
ID----------------------ID
テキスト 計算F(ファイルA::テキスト)--------テキスト
数字
・ファイルAとBはIDでリレーション
・ファイルBとCは、「ファイルA::テキストの計算フィールド」とテキストでリレーション
この状態で、ファイルBから見てのファイルCの数字をすばやく取得したいと思っていますが
レイアウトを切り替えたりファイルをいったん終了したりしないとファイルの数字が取得できません。
非保存のリレーション参照元が原因の一つかと思いますが
常に最新の値を持ちたい(ファイルAのテキストは変わることがある)ため、
計算フィールドにしています。
スクリプトで「キャッシュの書き込み」やフィールド内容の確定をしても速度は変わりませんでした。
他に何かできることはあるでしょうか?
うまく表示できませんでした・・・
ファイルAあるフィールド
・ID
・テキスト
ファイルBにあるフィールド
・ID
・計算フィールド(ファイルA::テキスト)
ファイルCにあるフィールド
・テキスト
・数字
ファイルAとBがIDでリレーションし、
ファイルBの計算フィールドとファイルCのテキストがリレーションしています。
ファイルB ファイルA ファイルC
ID -------- ID
テキスト -------- テキスト
とするべきでは。
今のままで運用したいのでしたら、計算フィールド(ファイルA::テキスト)を運用しているレイアウトへ配置します。
Offline
他のリレーションの都合もあるため
ファイルの順序は変えられないのですが、
>ファイルB ファイルA ファイルC
これ良いですね。
ファイルA-ファイルB-ファイルA-ファイルC
とすればできそうです。
リレーション用だけに再度ファイルAを噛ませるのは考え付きませんでした。
>今のままで運用したいのでしたら、計算フィールド(ファイルA::テキスト)を運用しているレイアウトへ配置します。
この意味が今一つ理解できず・・・
ファイルB飛ばしてファイルCを直接ファイルAにリレーションさせるべき、ということでしょうか?
照合フィールドが非保存であることで参照が遅くなる、
とは考えにくいのでは。
フィールドを作り、現在の照合フィールドの値を全置換でコピーして、
それを照合フィールドに変えてみればテストできますよね。
他の原因を探ってみる必要が有ると思いますよ。
Offline
「遅い」のではなく、「非保存計算式は<必要になるまで>再計算されない」ということでしょう。
「レイアウトを切り替えたりファイルをいったん終了したりしないと」テーブルAの値が変わってもテーブルBの計算結果に反映されない。
スクリプトステップ「ウインドウ内容の再表示」を実行してはどうですか。
キャッシュ書き込みはチェックしてください。
Offline
FM12以降は「非保存計算式は<必要になるまで>再計算されない」という動きになります。
ですから、非保存計算式を再計算させるには、計算が必要になる状況を作ることです。具体的には、計算フィールド(ファイルA::テキスト)を、現在運用しているレイアウトへ配置すると、ウィンドウの更新により再計算されます。ウィンドウ内容を再表示させるとさらに確実でしょう。
Last edited by Shin (2020-03-26 15:22:58)
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 561.85 KiB (Peak: 581.68 KiB) ]