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

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

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

You are not logged in.

Announcement

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


#1 2017-06-08 16:39:33

ts
Member

繰り返しフィールドの任意の位置から任意の位置までの集計について(Ver16で)

2016年3月に以下の投稿があります
https://fm-aid.com/bbs2/viewtopic.php?id=4244

内容は、
********************************************************
過去ログも検索したのですが、見つからず何卒お助けください。Ver.6です。
繰り返しフィールドから任意の集計をしたいのです。
31の繰り返しフィールドがあり、すでにその中に数字が入ってます。(空白もあり)
たとえばその繰り返しフィールドの1~10までの数字が入ってる箇所の合計、もしくは15~から31までのフィールドの中で数字の入っている箇所のフィールドの合計を求めたいのです。
1  2  3  4  5  6  7  8  9  10  11  12  13 ...
----------------------------------------------
   3      4          3          4          3        ...
1~10までの合計の場合、14を返したいのです。
どういう式を用いれば良いでしょうか?初心者ゆえお手数かけますがなにとぞよろしくお願いいたします。
******************************************************************************
質問の方のFMバージョンはVer6でしたが、
最新のVer16を使用した場合、有効な計算方法はありますでしょうか?

以上、よろしくお願い致します。

Offline

#2 2017-06-08 18:37:41

Hiro
Member

Re: 繰り返しフィールドの任意の位置から任意の位置までの集計について(Ver16で)

ループ計算式で求める方法。

Let([
   $str=開始位置番号;
   $end=終了位置番号;
   $res="";
   $fnc="Case($str>$end; $res;
         Let([
            $res=Sum($res; その繰り返しフィールド[$str]);
            $str=$str+1
         ]; Evaluate($fnc) )
      )"
];
   Evaluate($fnc)
)

Offline

#3 2017-06-09 00:49:15

ts
Member

Re: 繰り返しフィールドの任意の位置から任意の位置までの集計について(Ver16で)

Hiro様

アドバイス有難うございました。
確かに、思い通りの結果が得られます。

Evaluate関数は、特定のフィールドの値を変更した時のtime stamp取得に使ったことが有りますが、
今回のような使い方は、ヘルプを見ても今一つ理解できません。

大変お手数ですが、可能でしたら、簡単に上記の式のご説明をお願いできませんでしょうか?
よろしくお願い致します。

Offline

#4 2017-06-09 04:08:14

Hiro
Member

Re: 繰り返しフィールドの任意の位置から任意の位置までの集計について(Ver16で)

目的のループ関数式を、Letでテキスト変数 $fnc に定義し、それをEvaluateで実行します。
定義式$fnc内のEvaluate($fnc)は自己再帰させてループ計算を実現するための処理です。
式の意味は、指定位置の値を加算する基本処理を、指定開始位置から終了位置まで繰り返しループさせ、集計結果を得るものです。

Let([
   //▼関数$fnc内で使われる引数を宣言
   $str=開始位置番号;
   $end=終了位置番号;
   $res="";
   //▼ループ関数$fncを定義(テキスト定義するだけで計算実行はしません)
   $fnc=
      "Case($str>$end; $res;   /*ループ抜け条件をCaseの最初で宣言*/
         Let([   /*条件外は基本処理を行う、繰越し変数を再定義*/
            $res=Sum($res; その繰り返しフィールド[$str]);
            $str=$str+1
         ]; Evaluate($fnc) )   /*再帰措置、関数式の最初へ戻り再計算*/
      )"
];
   //▼定義関数$fncをここで実行
   Evaluate($fnc)
)

Last edited by Hiro (2017-06-09 11:22:33)

Offline

#5 2017-06-09 08:49:00

ts
Member

Re: 繰り返しフィールドの任意の位置から任意の位置までの集計について(Ver16で)

Hiro様

早速のご対応、有難うございました。
本当に助かります。

これから勉強します!

Offline

#6 2017-06-09 18:35:57

Shin
Member

Re: 繰り返しフィールドの任意の位置から任意の位置までの集計について(Ver16で)

ちょっと遊びで作ってみました。とっても面白い動きです。(上級者向き)
https://www.dropbox.com/s/y1fdr1hw855z1 … 7.zip?dl=0

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 514.02 KiB (Peak: 518.92 KiB) ]