みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境:FMP17 MAC
5レコード毎に1つ前のレコードのデータを合計していくフィールドを作成したのですが繰り返しフィールドにするとうまく動きません。
繰り返しフィールドでない場合はうまく動いてます。
[成功]
回数:数字
数:数字
合計:計算 If ( Mod ( 回数;5 ) ≠ 1 or 回数 ≠ 1 ; GetNthRecord ( 合計 ; Get ( レコード番号 ) - 1 ) + 数 ; 数 )
レコード1の数=1、レコード2の数=2・・・・レコード5の数=5、レコード6の数=6、レコード7の数=7
レコード1の合計=1、レコード2の合計=3・・・・レコード5の合計=15、レコード6の合計=6、レコード7の合計=13
[失敗]
回数:数字
数[3]:数字
合計[3]:計算 If ( Mod ( 回数 ;5 ) ≠ 0 or 回数 ≠ 1 ; GetNthRecord ( 合計 ; Get ( レコード番号 ) - 1 ) + 数 ; 数 )
合計[1]は上記と同じ計算結果が表示されますが合計[2]と合計[3]は?になってしまいます。
何が原因は分からず困り果ててます。
どなたか解決方法わかる方いらっしゃいますか?
非繰り返しフィールドを参照する場合は
回数[1]
のように参照する繰り返し番号を指定する必要があります。
(指定しないと繰り返し2では回数[2]という存在しない値を参照してしまう)
繰り返し計算については任せるとして、
その計算式そのものに問題が出るようになります。その式が参照している式は、さらに同じ合計フィールドを参照していますね。そのフィールドがさらに別の合計フィールドを参照しているという、つまり再帰になっています。
おそらく1700レコードを過ぎたあたりから値を返さないようになります。
再帰にならない別の式を考えられた方がいいでしょう。
例えば、
回数グループ:Div ( 回数 - 1 ; 5 )
という計算フィールドを作っておきます。
数を合計する集計フィールドを作って、現在の合計、回数グループごとにリセットするようにしておきます。そのフィールドを回数と回数グループでソートしたレイアウトで配置します。
繰り返しを使っていても、個別に集計させれば大丈夫です。
Last edited by Shin (2022-10-07 20:43:25)
Offline
>himadaneeさま Shinさま
お二人とも、ありがとうございます。思っていたことができました。
とくにShinさまのファイルはとても勉強になりました。
さらに質問なのですが、この合計した数をリレーションで参照することはできないのでしょうか?
回数をキーにしてリレーションを設定したのですが、計算フィールドでは全て?になり、Shinさまのファイルだと合計されてない数(2回目だと15、4、6)が表示されてしまいます。
現在の集計値ですので、別のところから参照する事はできませんね。リレーション集計の手法で。
https://www.dropbox.com/s/ef6uq2tiuasxb … 2.zip?dl=0
Offline
> Shinさま
ありがとうございます。
大変勉強になりました。
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 554.55 KiB (Peak: 581.6 KiB) ]