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

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

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

You are not logged in.

Announcement

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


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

トリトンりき
Guest

集計のやり方

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
Guest

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
Guest

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

トリトンりき
Guest

Re: 集計のやり方

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

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

Shin
Member

Re: 集計のやり方

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

Offline

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

himadanee
Guest

Re: 集計のやり方

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

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

トリトンりき
Guest

Re: 集計のやり方

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

ありがとうございました

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

Shin
Member

Re: 集計のやり方

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

Last edited by Shin (2021-02-25 12:32:22)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 9 queries executed - Memory usage: 521.68 KiB (Peak: 526.59 KiB) ]