初心者のFileMaker pro Q&A

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

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

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

ログインしていません。

アナウンス


#1 2021-02-23 10:50:28

トリトンりき
ゲストユーザー

[解決] 集計のやり方

windows10 FM18です

フィールド:産地 商品名 単価
上記のフィールドが3つあります

これを横並びにリスト化して集計表を作りたいと思っております

例:商品名:りんご、みかん、なし、イチゴ、バナナ・・・
  産地:長野、高知、宮崎・・・ データはこんな感じです

フィールドが1つしかないのにどうやって横並びにして集計させるのか分かりません

集計出力イメージ

産地  りんご みかん なし イチゴ バナナ 合計
長野   6    5   2   8   9   30
高知   9   3   1   6   5   24
宮崎   1   2   3   2   1   9
合計   15  8    6  16   15  63

上記のように出力(エクスポートも含む)にしたいです
商品名の数だけフィールドを作らなければいけないのか、変数に代入して処理できるのかご指導よろしくお願いします

#2 2021-02-23 13:51:27

Rtn
ゲストユーザー

Re: [解決] 集計のやり方

データの整理だけ書き込ませていただきます

処理①Loop処理(レコード移動)を使い、変数:$MakeJSONにJSONの値を上書きしていきます。
計算①JSONSetElement ( $MakeJSON ; 産地::産地 & "." & 産地::商品名;産地::単価;JSONNumber)

処理②値一覧をフィールドの値から作成
計算②
$Get産地 = ValueListItems ( "" ; "産地" )
$Get商品 = ValueListItems ( "" ; "商品名" )

処理③Loop処理($Get産地)の中に、Loop処理($Get商品)を記述し、全ての産地に対して商品名を入力してゆきます。
計算③$GetJSON = JSONGetElement ( $MakeJSON ; $産地 & "." & $商品 )※存在しない値は0になります。

処理④変数$JSONDataに$GetJSONの値を代入します
計算④$$JSONData = JSONSetElement ( $JSONData ; $産地 & "." & $商品 ; $GetJSON ; JSONNumber )

※データの並び順はJSONがおこなってくれます。※下記のデータは宮崎 マンゴー 12を追加した結果

{
    "宮崎" :
    {
        "なし" : 3,
        "みかん" : 2,
        "りんご" : 1,
        "イチゴ" : 2,
        "バナナ" : 1,
        "マンゴー" : 12
    },
    "長野" :
    {
        "なし" : 2,
        "みかん" : 5,
        "りんご" : 6,
        "イチゴ" : 8,
        "バナナ" : 9,
        "マンゴー" : 0
    },
    "高知" :
    {
        "なし" : 1,
        "みかん" : 3,
        "りんご" : 9,
        "イチゴ" : 6,
        "バナナ" : 5,
        "マンゴー" : 0
    }
}

#3 2021-02-23 14:12:43

Rtn
ゲストユーザー

Re: [解決] 集計のやり方

──────────────────────────────
計算①
レコード/検索条件/ページへ移動[最初の]
Loop

変数を設定
$MakeJSON =
JSONSetElement ( $MakeJSON ; 産地::産地 & "." & 産地::商品名 ; 産地::単価 ; JSONNumber )

レコード/検索条件/ページへ移動[次の;最後まできたら終了:オン]
End Loop
──────────────────────────────
計算②
変数を設定
$Get産地 = ValueListItems ( "" ; "産地" ) ;
$産地数 = ValueCount ( $Get産地 ) ;
$Get商品 = ValueListItems ( "" ; "商品名" ) ;
$商品数 = ValueCount ( $Get商品 ) ;
──────────────────────────────
計算③

変数を設定:$産地処理 = 1
──────────────────────────────
Loop

変数を設定:
$産地 = GetValue ( $Get産地 ; $産地処理 );
$商品処理 = 1
  ────────────────────────────
  Loop

    $商品 = GetValue ( $Get商品 ; $商品処理 ) ;
    $GetJSON = JSONGetElement ( $MakeJSON ; $産地 & "." & $商品 ) ;
    $JSONData = JSONSetElement ( $JSONData ; $産地 & "." & $商品 ; $GetJSON ; JSONNumber )

   Exit Loop If [$商品処理 = $商品数]

   変数を設定:$商品処理 = $商品処理 + 1

  End Loop
  ────────────────────────────
Exit Loop If [$産地処理 = $産地数]

変数を設定:$産地処理 = $産地処理 + 1

End Loop
──────────────────────────────

#4 2021-02-24 08:47:51

トリトンりき
ゲストユーザー

Re: [解決] 集計のやり方

変数をつかったやりかたありがとうございます
ファイルメーカーでも普通のプログラム(Basicなど)と同じように変数処理ができるようになったんですね
これはこれでたいへん参考になります
私が今やりたいことは集計で縦計の合計もエクスポートできるかどうかが知りたいのです
まずは、できるのかできないのかをはっきりしないと進まないのもですから

#5 2021-02-24 08:52:44

Shin
メンバー

Re: [解決] 集計のやり方

クロス集計ですので、そのキーで検索すれば、たくさん出てきますよ。
https://fm-aid.com/bbs2/viewtopic.php?id=10790
などどうでしょう。

オフライン

#6 2021-02-24 09:00:24

himadanee
ゲストユーザー

Re: [解決] 集計のやり方

>出力(エクスポートも含む)
もし結果を印刷したいなら、データのままExcelなどにエクスポートしてから集計したほうが簡単かもしれません。
横の上限数があらかじめ想定できれば、FMで作り込むのもいいかもしれないけど...

#7 2021-02-24 10:19:41

トリトンりき
ゲストユーザー

Re: [解決] 集計のやり方

Shinさま、himadaneeさま、アドバイスありがとうございました
ファイルメーカーのエクスポートのところでは、合計の行のエクスポートは出来ないので普通にしてはだめだと理解しております
どうしても合計の行もエクスポートしたいものです
できないことをいつまでも考えてもしょうがないので別のやり方を考えたいと思います

ありがとうございました

#8 2021-02-25 11:37:14

Shin
メンバー

Re: [解決] 集計のやり方

繰り返しフィールドで集計する簡単なサンプルを
https://www.dropbox.com/s/22s9prb86imcc … 2.zip?dl=0

編集者 Shin (2021-02-25 12:32:22)

オフライン

クィック投稿

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

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

Board footer