みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
久しぶりにお世話になります。
どうぞよろしくお願いします。
環境はwin8 fm12です。
今回お知恵をお借りしたいのは、クロス集計による1週間ごとの集計です。
カレンダーのように月ごとが基本にはなるのですが1週間の中で月をまたぐこともあるのでそれも含めて計算したいのです。
たとえば今年の四月のカレンダーだと(月によって替わる)
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
のようになってると思うのですがこの5週間分の合計を計算したいのです。
データのフィールドは
日付 商品名 店舗名 数量
2014/3/1 肉 A店 150
2014/3/1 肉 B店 150
2014/3/1 肉 C点 100
2014/3/1 魚 A店 150
2014/3/1 魚 B店 100
2014/3/2 肉 B店 100
2014/3/2 魚 C点 200
・
・
・
上記のようなデータがあって、商品は現状だと6品ほど(今後増える予定)、店舗も5店ほど(今後増える予定)、数量に規則性はありません。
このデータを
4月
29 30 31 1 2 3 4 合計
肉 400 100 500
魚 250 200 450
5 6 7 8 9 10 11 合計
肉
魚
12 13 14 15 16 17 18 合計
肉
魚
19 20 21 22 23 24 25 合計
肉
魚
26 27 28 29 30 1 2 合計
肉
魚
というように商品ごとにその日の合計を表示した上に1週間の合計を表示させたいのです。
説明がわかりにくくて申し訳ございません。
私のやり方ではカレンダー状にして1日ごとの合計を表示できましたが、1週間の合計を表示できませんでした。
どうぞお知恵を貸してください。
よろしくお願いします。
Offline
集計表の日付開始日を7日分ずつずらして行くだけでは?
Offline
集計表の日付開始日を7日分ずつずらして行くだけでは?
旅人様 早速のご返信ありがとうございます。
やはり私には力がないようです。
過去にカレンダーについての投稿があり、それを参考に改造して作ろうとしていた私が浅はかだったようです。
http://forums.filemaker.com/posts/1d97a9c086
こちれを見ておりました。
そもそもなのですが、今後増えていく商品名を表示させるためにはどうしたらよいですか?
初歩的なことで申し訳ございません。
よろしくお願いします。
Offline
見ると私が混乱するのでリンク先は見てないですけど
カレンダー全体は考えない方が楽かも。
1週間分の集計なら集計したい月曜日?を決めたらその週の6日分は
計算(繰り返しフィールド)で出るわけですから。
商品名が増えたらその都度追加していくしか無いでしょう。
Offline
やはり1週間ごとに確認するしかないですか。
1か月の流れを見たかったのでカレンダーというイメージでいたんですが、難しいんですね
何とかならないものですかなー
Offline
うっ、表とデータが違うのでよく見ていなかった。
1ヶ月分を週ごとにまとめて表示したいという意味ですか・・・
表示計算用のリレーションが週の数分要りますね。
カレンダーを週ごとに切り離して、それぞれでリレーション。
全店舗同時表示なら×店舗数になる?・・・
Offline
旅人様 たびたびのご返信ありがとうございます。
週ごとにリレーションするのですね。
全店同時表示というよりは店舗は気にせず同じ日に同じ商品がどれだけでたかがわかればいいです。
現状 フィールド
開始日 日付 グローバル ←月頭の日付を入れるようにしています。
日付一覧 計算 グローバル Let([$start=Date(Month(開始日[1]);1;Year(開始日[1]));$date=$start + Get(計算式繰り返し位置番号) - DayOfWeek($start)];$date)
このフィールドで日付は表示できていますが、7日ごとにずらして計算するためにはどのようにしたらいいのでしょう?
恐れ入りますが教えてください。
よろしくお願いします
Offline
日付一覧が7行繰り返しなら、次週は日付一覧+7でしょう。
Offline
旅人様 ご返信ありがとうございます。
日付一覧を7行に区切るのは理解でき第1週目の1日数量と累計は出すことできました。
ここでまた進まなくなり教えていただきたいです。
カレンダーを6週分作りレイアウトを6つ作りましたが、この6つの週を1つのレイアウトで表示するのはどうしたらよいのでしょうか。
恐れ入りますがよろしくお願いします
Offline
4月
29 30 31 1 2 3 4 合計
肉 400 100 500
魚 250 200 450
5 6 7 8 9 10 11 合計
肉
魚
12 13 14 15 16 17 18 合計
肉
魚
19 20 21 22 23 24 25 合計
肉
魚
26 27 28 29 30 1 2 合計
肉
魚というように商品ごとにその日の合計を表示した上に1週間の合計を表示させたいのです。
私のやり方ではカレンダー状にして1日ごとの合計を表示できましたが、1週間の合計を表示できませんでした。
出来ている日計表示のフィールドは繰り返し[42]フィールドだとすれば、週計表示も繰り返し[6]計算フィールド(42日6週分割)に下式でそれぞれ算出できます。
Let([
#n=7*(Get(計算式繰り返し位置番号)-1);
#f=0&Substitute(10^7-1;9;"&Let([#n=#n+1];\";\"&日計表示フィールド[#n])")
];
Evaluate("Sum(" &Evaluate(#f) & ")")
)
Offline
1商品 & 1週間 を1レコード
のテーブルがいいんじゃないかな。
日付と、合計を7回の繰り返しにして、
「週」を表すフィールドを加えれば、
それをキーとした小計パートのレイアウトで、
書かれた例のような、週ごとに区切った一覧の表示が出来ますよ。
これなら、商品の変更も問題ないでしょう。
Offline
hiro様 チポ様 ご回答ありがとうございます
hiro様にご回答いただいた式ですが
Let([
#n=7*(Get(計算式繰り返し位置番号)-1);
#f=0&Substitute(10^7-1;9;"&Let([#n=#n+1];\";\"&日計表示フィールド[#n])")
];
Evaluate("Sum(" &Evaluate(#f) & ")")
)
週計というフィールドを作って式を入れてみましたが?になってしまい解析できていません。
よろしければもう少し詳しく教えていただきたいです。
チポ様 1商品 & 1週間 を1レコードとは具体的にどうしたらよいのでしょう?
現在6週分のカレンダーを作りこれを1つにするのにどうしたらよいかあがいている状態です。
大変恐れ入りますがどうぞ教えてください。
よろしくお願いします
Offline
「日計表示フィールド」は繰り返し[42回]フィールドになっていますか?
例えば、 式:日計表示フィールド[42] の答えは?
式で遣っている事は、「週計表示フィールド」の繰り返し項目ごとの最適化式の生成で、
1週目:週計[1] → Sum(0;日計[1];日計[2];日計[3];日計[4];日計[5];日計[6];日計[7])
2週目:週計[2] → Sum(0;日計[8];日計[9];日計[10];日計[11];日計[12];日計[13];日計[14])
・・・・・
6週目:週計[6] → Sum(0;日計[36];日計[37];日計[38];日計[39];日計[40];日計[41];日計[42])
Last edited by Hiro (2015-04-09 15:26:20)
Offline
「日計表示フィールド」は繰り返し[42回]フィールドになっていますか?
例えば、 式:日計表示フィールド[42] の答えは?式で遣っている事は、「週計表示フィールド」の繰り返し項目ごとの最適化式の生成で、
1週目:週計[1] → Sum(0;日計[1];日計[2];日計[3];日計[4];日計[5];日計[6];日計[7])
2週目:週計[2] → Sum(0;日計[8];日計[9];日計[10];日計[11];日計[12];日計[13];日計[14])
・・・・・
6週目:週計[6] → Sum(0;日計[36];日計[37];日計[38];日計[39];日計[40];日計[41];日計[42])
hiro様 早速のご返答ありがとうございます。
データテーブルの日付フィールドとカレンダーテーブルの日付一覧フィールドでリレーション
データテーブルの種類フィールドとカレンダーテーブルの種類フィールドでリレーション
データテーブルのデータテーブルの日付フィールドとデータテーブル2の日付フィールドでリレーション
データテーブルの種類フィールドとデータテーブル2の種類フィールドでリレーション
データテーブル
フィールド名
日付
種類
店名
数量
数量合計 非保存 fromデータテーブル、=sum(データテーブル2::数量)
カレンダーテーブル
フィールド名
開始日
日付一覧 計算[42] 非保存 Let([$start=Date(Month(開始日[1]);1;Year(開始日[1]));$date=$start + Get(計算式繰り返し位置番号) - DayOfWeek($start)];$date)
日計表示フィールド 計算[42] 非保存 Lookup(データテーブル::数量合計; "")
週計表示 計算[6] 非保存 Let([ #n=7*(Get(計算式繰り返し位置番号)-1); #f=0&Substitute(10^7-1;9;"&Let([#n=#n+1];\";\"&日計表示フィールド[#n])")]; Evaluate("Sum(" &Evaluate(#f) & ")"))
種類
現在構成はこのようになっておりますがやはり週計表示ははてなになってしまします。
恐れ入りますがよろしくお願いします
Offline
済みません、実際に自己検証してみたら式に誤りがありました。
正しい式は、(赤字部分が修正箇所)
Let([
$n=7*(Get(計算式繰り返し位置番号)-1);
$f=0 & Substitute(10^7-1;9;"&Let([$n=$n+1];\";\"&日計表示フィールド[$n]+0)")
];
Evaluate("Sum(" & Evaluate($f) & ")")
)
Offline
済みません、実際に自己検証してみたら式に誤りがありました。
正しい式は、(赤字部分が修正箇所)Let([
$n=7*(Get(計算式繰り返し位置番号)-1);
$f=0 & Substitute(10^7-1;9;"&Let([$n=$n+1];\";\"&日計表示フィールド[$n]+0)")
];
Evaluate("Sum(" & Evaluate($f) & ")")
)
hiro様 ご返信ありがとうございます。
わざわざ検証していただきありがとうございます。
週計は表示できるようになりました。
この場合週計は6週分繰り返しフィールドで確認できますが、日計表示はどのように表示すると種類別に6週分表示できるのでしょうか?
現状、種類が6種類あってレコードを6枚作って42日分がボディの中に入ってるんですが、7日ずつ折り返してるよう表示したいです。
大変申し訳ないですが教えていただきたいです。
お願いします
Offline
集計用自己リレーション「データテーブル2」とルックアップ用リレーション「データテーブル」の「日別」条件に「種類別」条件を追加します。
結果として、「日計」を「種別日計」へ替えて、それを先の式に適用すれば良いかな。
Offline
hiro様 ご返信ありがとうございます。
すみません。
【「日別」条件に「種類別」条件を追加します。 の意味が分かっていません。】
『データテーブルのデータテーブルの日付フィールドとデータテーブル2の日付フィールドでリレーション
データテーブルの種類フィールドとデータテーブル2の種類フィールドでリレーション』
とは何が違うんでしょうか?
また、【結果として、「日計」を「種別日計」へ替えて、それを先の式に適用すれば良いかな。】
こちらの「日計」とは、「日計表示フィールド」のことでよろしいのでしょうか?
さらに、【それを先の式に適用】はhiro様に教えていただいた
Let([
$n=7*(Get(計算式繰り返し位置番号)-1);
$f=0 & Substitute(10^7-1;9;"&Let([$n=$n+1];\";\"&日計表示フィールド[$n]+0)")
];
Evaluate("Sum(" & Evaluate($f) & ")")
)
こちらの指揮でよろしいのでしょうか?
何もわからず申し訳ございません。
教えてください。
おねがいします。
Offline
私の提案、今のトライと平行では荷が重たいでしょう。
今のが終わってから、ご要望が有ればレスいたしますよ。
Offline
>全店同時表示というよりは店舗は気にせず同じ日に同じ商品がどれだけでたかがわかればいいです。
>この6つの週を1つのレイアウトで表示するのはどうしたらよいのでしょうか。
手抜きですけど、こんなのではダメかな?
http://pupld.net/28/150410/flhvjlmlse/index.cgi
売上集計.fmp12
検証不十分
Offline
チポ様 お気遣いありがとうございます。
おっしゃる通りですね。
いろいろなパターンをやってみたいとのことから欲張ってしまいました。
改めてお声かけさせていただきます。
Offline
旅人様 サンプルありがとうございます。
思い描いているものでございます。
スクリプトを使って集計されるのですね。
私には少しハードルが上がってしまいましたが、トライしてみます。
作っていただいたのに、大変申し訳ないのですが、この場合の週の合計はどのように作ればよいでしょうか?
週の合計あれば完璧です。
もしよろしければ週の合計入ったものを作っていただけると本当にありがたいです。
恐れ入りますがよろしくお願いします
Offline
集計テーブルで=Sum(結果)という繰り返しの横合計の計算フィールドを作って、
表示レイアウトの結果の右横に置くだけですけど。
スクリプトで集計しているのではなく、スクリプトでは全品名の5週分の
組合せ(3品目×5週=15レコード)を作っているだけです。
分類値一覧はカスタム値ではなく売上テーブルの分類フィールドにして下さい。
分類が増えてもいいようにしたつもりでしたが、ここの変更を忘れていました。
Offline
書いていたら、旅人さんが既にレスされてましたが、一応!
#1で希望された集計表形式には、旅人さんの提案いいですネ。(^^
別途集計専用テーブルに希望表形式に則した必要レコード(種類数3x週数6=18レコード)をスクリプト生成。それを集計レイアウトでソート表示。
この方法だと、質問の種別週計計算も楽チン、単に、 Sum(集計テーブル::結果) だけ。 (ココで、結果は種別日計ルックアップ計算・繰り返し[7]フィールド)
老婆心ながら、実用には多少ブラシアップが必要かな。
・年月を指定すれば、カレンダー日付と週配分は自動計算へ。
・種別値一覧はフィールド値から自動更新取得へ。
・カレンダー週内の隣接月日は集計から排除へ。
Offline
一応、付け足し再アップ
http://pupld.net/28/150410/zc8m25sobr/index.cgi
Hiroさん
私、昔から日付関連は特に苦手なので・・・
Offline
[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 635.7 KiB (Peak: 668.61 KiB) ]