初心者のFileMaker pro Q&A

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

1.ファイルメーカーで解らない事があればここで質問して下さい。

何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス

#1 2018-06-23 18:14:54

pol
メンバー

繰り返しフィールドのレコードカウント集計を部分的に取りたい

使用環境はwin8.1、FM12です。


ある繰り返しフィールドがあります。
この繰り返しフィールドは18の繰り返しで定義されているテキストフィールドです。

あるレイアウト上では合計で10のレコード数があります。

繰り返しフィールド1~8
繰り返しフィールド9~15
繰り返しフィールド16~18


このように繰り返しフィールドを区切って、
その区間のレコードカウント集計を取りたいです。


もっと具体的に言えば、
1~8の繰り返しフィールドのレコードカウント集計

9~15の繰り返しフィールドのレコードカウント集計

16~18の繰り返しフィールドのレコードカウント集計


これはできますでしょうか?

オフライン

#2 2018-06-23 21:40:57

Hiro
メンバー

Re: 繰り返しフィールドのレコードカウント集計を部分的に取りたい

18コマを3グループ分けで集計だから、
繰り返し[3回]のカウント「計算フィールド」とその合計の「集計フィールド」で求める簡潔な方法。
「集計フィールド」を使うので、任意絞り込みした対象レコードを対象に集計ができます。

●「計算フィールド」
繰り返し[3回]の計算フィールドを作り、以下の式(再帰ループ式)を設定、(結果:数値、結果は索引保存)
++++++++++++++++
Let(
[
   $fnc=
      "Case($str>$end; $cnt;
         Let([
            $cnt=Sum($cnt; IsEmpty(18回フィールド[$str])=0);
            $str=$str+1
         ]; Evaluate($fnc))
      )"
];
   Choose(Get(計算式繰り返し位置番号) + Left(List(18回フィールド); 0)   //← +Left(…; 0) 式部は 自動計算誘発トリガ 目的のダミー式
      ; ""
      ; Let([$str=1; $end=8; $cnt=""]; Evaluate($fnc))
      ; Let([$str=9; $end=15; $cnt=""]; Evaluate($fnc))
      ; Let([$str=16; $end=18; $cnt=""]; Evaluate($fnc))
   )
)

++++++++++++++++

●「集計フィールド」
繰り返し[3回]の集計フィールドを作り、上記 計算フィールドの個別繰り返しごとの合計 を設定してお終い。


//////////////////////////////////////////////
【 補足 】2018/06/25 2:28
実装は簡単ですが、念のためサンプルをアップしておきます。

●サンプル「繰り返し内グループ分け個別集計.fmp12」 → https://yahoo.jp/box/bOBO-8

編集者 Hiro (2018-06-25 02:27:40)

オフライン

#3 2018-06-24 08:40:44

Shin
メンバー

Re: 繰り返しフィールドのレコードカウント集計を部分的に取りたい

3個の繰り返しフィールドへ分解して、集計する、というのが簡単でしょうね。

オフライン

#4 2018-06-25 09:20:10

チポ
メンバー

Re: 繰り返しフィールドのレコードカウント集計を部分的に取りたい

ベタベタですが、

  Count ( 繰り返し[1] ; 繰り返し[2] ; 繰り返し[3] ; 繰り返し[4] ; 繰り返し[5] ; 繰り返し[6] ; 繰り返し[7] ; 繰り返し[8] )
  Count ( 繰り返し[9] ; 繰り返し[10] ; 繰り返し[11] ; 繰り返し[12] ; 繰り返し[13] ; 繰り返し[14] ; 繰り返し[15] )
  Count ( 繰り返し[16] ; 繰り返し[17] ; 繰り返し[18] )

の三つのフィールドを作り、
これを集計すればいいですね。

分かりやすいかも。。

オフライン

#5 2018-06-25 15:47:07

Hiro
メンバー

Re: 繰り返しフィールドのレコードカウント集計を部分的に取りたい

>#4チポさん『ベタベタですが、…(#4式)… 分かりやすいかも。』
もし、#2の再帰ループ式が分かりづらいので、ベタベタ式を採るとしても、

下式のように、3つのフィールドを1つの繰り返し[3回]フィールドへまとめて、
6個フィールド追加でなく2個繰り返しフィールド追加だけに留めた方が、
少しはスマートなベタベタでないかなぁ、…!

Choose( Get(計算式繰り返し位置番号)
   ; ""
   ; Count(繰り返し[1]; 繰り返し[2]; 繰り返し[3]; 繰り返し[4]; 繰り返し[5]; 繰り返し[6]; 繰り返し[7]; 繰り返し[8])
   ; Count(繰り返し[9]; 繰り返し[10];  繰り返し[11]; 繰り返し[12]; 繰り返し[13]; 繰り返し[14]; 繰り返し[15])
   ; Count(繰り返し[16]; 繰り返し[17]; 繰り返し[18])
)

編集者 Hiro (2018-06-25 15:52:29)

オフライン

#6 2018-06-25 16:33:07

チポ
メンバー

Re: 繰り返しフィールドのレコードカウント集計を部分的に取りたい

HIroさんの再起式を見て、
あえてベタベタの提案をしました。

再起をやめて、繰り返しもやめて、と。。

スマートならHiroさんの式でしょう。


そもそもですが、
繰り返しを使うのが正しいのか考える必要があるのでは。

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer