みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
If(終了日 - Get(日付) ≦ 0 ; 0 ; 終了日 -Get(日付))
で満了日までを計算していますが、非保存ではなく索引設定がされた状態で再計算する方法はないでしょうか?
こういういつまで、の非保存の計算が増えてFMが重たくなっているので減らしたいです。
計算値自動入力、置き換えないにしてみましたが、翌日空白になっていました。
よろしくお願い致します。
何に使っているフィールドですか。
検索用でしたら、終了日を対象にして、検索の条件を変更しましょう。
残り日数を画面表示しているのでしたら、毎日更新しないといけないので、非保存にしておかないと、自動的に更新されません。どうしても索引をもたせたいのでしたら、ファイルを開くとき、日付が変わったときに、全レコードを全置換するようなスクリプトを走らせるのがいいでしょう。
Offline
値が毎日変わるので、「索引設定がされた状態で再計算」は考え方に無理がありますよね。
この場合は、一旦0になったらその後は「終了日」が変わらない限り再計算の必要がないので、全レコードの代りに>0を検索してから全置換すれば多少はまし?
そのフィールドを検索しないなら、レイアウト上の計算式にすれば、実際に必要なレコードだけ計算するのでフィールド自体が不要かもしれない...
しかし表示するときに計算するのは変わらないので、「重たくなる」のは変わらないかも?
ちなみに
Max( 0 ; 終了日 -Get(日付))
とすれば計算式は簡単になります。(が問題の根本は変わりません。)
もたついて困っているのなら、
終了日が過ぎたレコードは、変わることがないでしょうから、
他のテーブルに移すのはいかがでしょう。
運用上、可・不可あるでしょうが、
運用するレコード数をだいぶ減らせるのでは。
Offline
手元の20000レコードくらいの顧客リストで、動的に年齢を計算させていますが、年齢の検索させてもせいぜい0.5病程度です。リスト表示でももたつくことはありませんが。
どのような状況なんでしょうね。
Offline
別テーブルのフィールドを、同じレイアウト内で各ポータルで表示していました。
契約期間の終了(更新)まであと何日や資格の更新期限まで等期限があるものは非保存で計算し、残り日数を表示しています。
ポータル表示ですので、過ぎたレコードも「0日」として表示されています。
チボさんの言われる通り、過ぎたレコードが変わることはないのですが、そもそも別テーブルから引っ張っているので、「満了まで」を表示しない、などの処理をするのはいいかもしれません。
(他にもこのレイアウトには数ページのタブの中に全部に別テーブルのポータルなど重くなりそうなレイアウトになっているのですが)
別レイアウトでもこういった「非保存でいつまで。」といったような計算が多いためか、動作が重くなっていると感じています。
ローカル上ではあまり問題ないのですが、クラウドだからでしょうか?
>ファイルを開くとき、日付が変わったときに、全レコードを全置換するようなスクリプトを走らせるのがいいでしょう。
https://fm-aid.com/bbs2/viewtopic.php?id=8947
このページで言われていた発火トリガーの件ですね。
ありがとうございます。試してみます。
残り日数を表示するだけでしたら、オンプレでもクラウドでもあまり変わらないはずです。その残り日数で検索したりソートしたりしていませんか。
Offline
残り日数を表示するだけでしたら、オンプレでもクラウドでもあまり変わらないはずです。その残り日数で検索したりソートしたりしていませんか。
残り日数でソートはありませんが、各ポータル内で契約の主キー順や、終了日が近い順などのソートは入っています。
よく使うレイアウト以外でも同じく計算とソートは使われています。
一番よく開くページで10秒ほど、他ページで3-7秒ほど待ちます。
以後にはなりますが、有給管理表も作成したいので番号順のソートや取得期限残日数等ソートと計算が出てくるため
今のうちに軽くしておきたいと思っています。
非保存計算が重たい動作と思っていたのですがソートもかなり重くなる動作なのですね。
> 各ポータル内で....、終了日が近い順などのソート
> 同じく計算とソートは使われています
ポータルフィルターは使っていませんか。
これらの処理がものすごぐ遅くなっている可能性があります。
現場でみないと確実なことはいえませんが、改善できることが多いです。
Last edited by Shin (2023-10-24 15:28:02)
Offline
ポータルのソートの他に、削除ボタンで破棄したレコード(ステータス:破棄)を表示しないためにフィルターを使用しておりました。
他のポータル類も大体フィルタが使用されています。
ポータル表示していない別レイアウトでは対象レコードの絞り込み 除外する で破棄や削除となっているステータスを除外する処理をしています。
フィルターは、リレーション先の全てのレコードにアクセスします。ですから、その内容によっては時間がかかることがありますね。
クラウド環境でしたら、フィルターの条件には単純な比較のみとしておき、計算式は含めないようにされたほうがいいでしょう。
> 破棄や削除となっているステータスを除外する処理
そのユーザーに一切アクセスさせないのでしたら、アクセス権で制限したほうが簡単でしょう。
Last edited by Shin (2023-10-26 10:54:35)
Offline
計算フィールドのもたつきと言われてましたが、
ポータルの表示かもしれませんね。
試しにポータルフィルタを外してみたらいかがでしょう。
Offline
Pages: 1
[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 571.69 KiB (Peak: 588.59 KiB) ]