みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
商品の累積出庫数を計算フィールドで計算させたところ、183件目までは計算されたのですが184件目から結果が?になってしまいました。
また、累計フィールドはレイアウトモードで入力可能に設定しているのですが、183件目(計算できている最後のレコード)ではフィールドがアクティブになりません。
初めての現象で全く原因がわかりません。
お分かりになる方がいらっしゃいましたら、お教えいただけますでしょうか?
[実績テーブル]
商品名 出庫数 累計 レコード番号
りんご 27 4354 181
りんご 54 4408 182
りんご 54 4462 183
りんご 54 ? 184
:
累計フィールドの計算式は以下の通りです。
If (
Get ( レコード番号 ) = "1";
出庫数;
出庫数 + GetNthRecord ( 累計;Get ( レコード番号 )-1 )
)
計算が再帰になっていますので、スタックがオーバーフローしたのでしょう。
累計を、出庫数を合計する集計フィールドに変更し、現在の集計値 にすればいいです。
または、レコード番号で自分以下を対象とする自己リレーションをはり、Sum(出庫数) でもいいです。
Last edited by Shin (2023-08-22 13:51:24)
Offline
商品名でリレーションしているんですよね?
とすれば累計フィールドは索引非保存になりますから、
自身の計算のために、自身以前のすべてのレコードで計算することになります。
これがオーバーフローしているのでしょう。
回避策はいくつか考えられますが、、
例えば、
自身以前と照合するようにリレーションすれば、
Sum関数で一発ですが。。
Offline
Shin様、チポ様
回答ありがとうございます。
勝手にややこしくしてただけだったのですね…w
集計フィールドの現在の合計で出来ました。ありがとうございました。
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 547.59 KiB (Peak: 579.34 KiB) ]