初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2023-10-23 11:11:05

コネコ
Guest

計算フィールドの再計算について

If(終了日 - Get(日付) ≦ 0 ; 0 ; 終了日 -Get(日付))

で満了日までを計算していますが、非保存ではなく索引設定がされた状態で再計算する方法はないでしょうか?
こういういつまで、の非保存の計算が増えてFMが重たくなっているので減らしたいです。
計算値自動入力、置き換えないにしてみましたが、翌日空白になっていました。
よろしくお願い致します。

#2 2023-10-23 11:32:33

Shin
Member

Re: 計算フィールドの再計算について

何に使っているフィールドですか。

検索用でしたら、終了日を対象にして、検索の条件を変更しましょう。
残り日数を画面表示しているのでしたら、毎日更新しないといけないので、非保存にしておかないと、自動的に更新されません。どうしても索引をもたせたいのでしたら、ファイルを開くとき、日付が変わったときに、全レコードを全置換するようなスクリプトを走らせるのがいいでしょう。

Offline

#3 2023-10-23 11:41:41

himadanee
Guest

Re: 計算フィールドの再計算について

値が毎日変わるので、「索引設定がされた状態で再計算」は考え方に無理がありますよね。
この場合は、一旦0になったらその後は「終了日」が変わらない限り再計算の必要がないので、全レコードの代りに>0を検索してから全置換すれば多少はまし?

そのフィールドを検索しないなら、レイアウト上の計算式にすれば、実際に必要なレコードだけ計算するのでフィールド自体が不要かもしれない...
しかし表示するときに計算するのは変わらないので、「重たくなる」のは変わらないかも?

ちなみに
Max( 0 ; 終了日 -Get(日付))
とすれば計算式は簡単になります。(が問題の根本は変わりません。)

#4 2023-10-23 11:46:26

チポ
Member

Re: 計算フィールドの再計算について

もたついて困っているのなら、
終了日が過ぎたレコードは、変わることがないでしょうから、
他のテーブルに移すのはいかがでしょう。

運用上、可・不可あるでしょうが、
運用するレコード数をだいぶ減らせるのでは。

Offline

#5 2023-10-23 12:13:12

Shin
Member

Re: 計算フィールドの再計算について

手元の20000レコードくらいの顧客リストで、動的に年齢を計算させていますが、年齢の検索させてもせいぜい0.5病程度です。リスト表示でももたつくことはありませんが。
どのような状況なんでしょうね。

Offline

#6 2023-10-23 15:24:33

コネコ
Guest

Re: 計算フィールドの再計算について

別テーブルのフィールドを、同じレイアウト内で各ポータルで表示していました。
契約期間の終了(更新)まであと何日や資格の更新期限まで等期限があるものは非保存で計算し、残り日数を表示しています。
ポータル表示ですので、過ぎたレコードも「0日」として表示されています。

チボさんの言われる通り、過ぎたレコードが変わることはないのですが、そもそも別テーブルから引っ張っているので、「満了まで」を表示しない、などの処理をするのはいいかもしれません。

(他にもこのレイアウトには数ページのタブの中に全部に別テーブルのポータルなど重くなりそうなレイアウトになっているのですが)
別レイアウトでもこういった「非保存でいつまで。」といったような計算が多いためか、動作が重くなっていると感じています。
ローカル上ではあまり問題ないのですが、クラウドだからでしょうか?


>ファイルを開くとき、日付が変わったときに、全レコードを全置換するようなスクリプトを走らせるのがいいでしょう。
https://fm-aid.com/bbs2/viewtopic.php?id=8947
このページで言われていた発火トリガーの件ですね。
ありがとうございます。試してみます。

#7 2023-10-23 17:53:31

Shin
Member

Re: 計算フィールドの再計算について

残り日数を表示するだけでしたら、オンプレでもクラウドでもあまり変わらないはずです。その残り日数で検索したりソートしたりしていませんか。

Offline

#8 2023-10-24 14:54:21

コネコ
Guest

Re: 計算フィールドの再計算について

Shin wrote:

残り日数を表示するだけでしたら、オンプレでもクラウドでもあまり変わらないはずです。その残り日数で検索したりソートしたりしていませんか。

残り日数でソートはありませんが、各ポータル内で契約の主キー順や、終了日が近い順などのソートは入っています。
よく使うレイアウト以外でも同じく計算とソートは使われています。
一番よく開くページで10秒ほど、他ページで3-7秒ほど待ちます。
以後にはなりますが、有給管理表も作成したいので番号順のソートや取得期限残日数等ソートと計算が出てくるため
今のうちに軽くしておきたいと思っています。

非保存計算が重たい動作と思っていたのですがソートもかなり重くなる動作なのですね。

#9 2023-10-24 15:19:20

Shin
Member

Re: 計算フィールドの再計算について

> 各ポータル内で....、終了日が近い順などのソート
> 同じく計算とソートは使われています
ポータルフィルターは使っていませんか。
これらの処理がものすごぐ遅くなっている可能性があります。
現場でみないと確実なことはいえませんが、改善できることが多いです。

Last edited by Shin (2023-10-24 15:28:02)

Offline

#10 2023-10-25 14:48:13

コネコ
Guest

Re: 計算フィールドの再計算について

ポータルのソートの他に、削除ボタンで破棄したレコード(ステータス:破棄)を表示しないためにフィルターを使用しておりました。
他のポータル類も大体フィルタが使用されています。
ポータル表示していない別レイアウトでは対象レコードの絞り込み 除外する で破棄や削除となっているステータスを除外する処理をしています。

#11 2023-10-25 15:23:06

Shin
Member

Re: 計算フィールドの再計算について

フィルターは、リレーション先の全てのレコードにアクセスします。ですから、その内容によっては時間がかかることがありますね。
クラウド環境でしたら、フィルターの条件には単純な比較のみとしておき、計算式は含めないようにされたほうがいいでしょう。

> 破棄や削除となっているステータスを除外する処理
そのユーザーに一切アクセスさせないのでしたら、アクセス権で制限したほうが簡単でしょう。

Last edited by Shin (2023-10-26 10:54:35)

Offline

#12 2023-10-25 16:51:57

チポ
Member

Re: 計算フィールドの再計算について

計算フィールドのもたつきと言われてましたが、
ポータルの表示かもしれませんね。

試しにポータルフィルタを外してみたらいかがでしょう。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 571.69 KiB (Peak: 588.59 KiB) ]