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

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

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

You are not logged in.

Announcement

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


#1 2015-04-08 14:04:00

kazu10
Member

カレンダーのように1週間の合計の計算方法

久しぶりにお世話になります。
どうぞよろしくお願いします。
環境は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

#2 2015-04-08 14:07:11

旅人
Member

Re: カレンダーのように1週間の合計の計算方法

集計表の日付開始日を7日分ずつずらして行くだけでは?

Offline

#3 2015-04-08 14:32:40

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

旅人 wrote:

集計表の日付開始日を7日分ずつずらして行くだけでは?

旅人様 早速のご返信ありがとうございます。

やはり私には力がないようです。
過去にカレンダーについての投稿があり、それを参考に改造して作ろうとしていた私が浅はかだったようです。
http://forums.filemaker.com/posts/1d97a9c086
こちれを見ておりました。

そもそもなのですが、今後増えていく商品名を表示させるためにはどうしたらよいですか?

初歩的なことで申し訳ございません。
よろしくお願いします。

Offline

#4 2015-04-08 17:59:35

旅人
Member

Re: カレンダーのように1週間の合計の計算方法

見ると私が混乱するのでリンク先は見てないですけど
カレンダー全体は考えない方が楽かも。
1週間分の集計なら集計したい月曜日?を決めたらその週の6日分は
計算(繰り返しフィールド)で出るわけですから。
商品名が増えたらその都度追加していくしか無いでしょう。

Offline

#5 2015-04-08 18:32:29

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

やはり1週間ごとに確認するしかないですか。
1か月の流れを見たかったのでカレンダーというイメージでいたんですが、難しいんですね
何とかならないものですかなー

Offline

#6 2015-04-08 18:35:19

旅人
Member

Re: カレンダーのように1週間の合計の計算方法

うっ、表とデータが違うのでよく見ていなかった。
1ヶ月分を週ごとにまとめて表示したいという意味ですか・・・
表示計算用のリレーションが週の数分要りますね。
カレンダーを週ごとに切り離して、それぞれでリレーション。
全店舗同時表示なら×店舗数になる?・・・

Offline

#7 2015-04-08 18:57:42

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

旅人様 たびたびのご返信ありがとうございます。
週ごとにリレーションするのですね。
全店同時表示というよりは店舗は気にせず同じ日に同じ商品がどれだけでたかがわかればいいです。

現状 フィールド
    開始日   日付  グローバル ←月頭の日付を入れるようにしています。
    日付一覧 計算  グローバル Let([$start=Date(Month(開始日[1]);1;Year(開始日[1]));$date=$start + Get(計算式繰り返し位置番号) - DayOfWeek($start)];$date)

このフィールドで日付は表示できていますが、7日ごとにずらして計算するためにはどのようにしたらいいのでしょう?

恐れ入りますが教えてください。
よろしくお願いします

Offline

#8 2015-04-08 21:27:25

旅人
Member

Re: カレンダーのように1週間の合計の計算方法

日付一覧が7行繰り返しなら、次週は日付一覧+7でしょう。

Offline

#9 2015-04-08 22:41:15

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

旅人様 ご返信ありがとうございます。

日付一覧を7行に区切るのは理解でき第1週目の1日数量と累計は出すことできました。

ここでまた進まなくなり教えていただきたいです。
カレンダーを6週分作りレイアウトを6つ作りましたが、この6つの週を1つのレイアウトで表示するのはどうしたらよいのでしょうか。

恐れ入りますがよろしくお願いします

Offline

#10 2015-04-09 00:31:06

Hiro
Member

Re: カレンダーのように1週間の合計の計算方法

#1のkazu10 wrote:

             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

#11 2015-04-09 09:21:03

チポ
Member

Re: カレンダーのように1週間の合計の計算方法

1商品 & 1週間 を1レコード
のテーブルがいいんじゃないかな。

日付と、合計を7回の繰り返しにして、
「週」を表すフィールドを加えれば、
それをキーとした小計パートのレイアウトで、
書かれた例のような、週ごとに区切った一覧の表示が出来ますよ。

これなら、商品の変更も問題ないでしょう。

Offline

#12 2015-04-09 14:42:29

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

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

#13 2015-04-09 14:58:41

Hiro
Member

Re: カレンダーのように1週間の合計の計算方法

「日計表示フィールド」は繰り返し[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

#14 2015-04-09 16:08:09

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

Hiro wrote:

「日計表示フィールド」は繰り返し[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

#15 2015-04-09 20:38:18

Hiro
Member

Re: カレンダーのように1週間の合計の計算方法

済みません、実際に自己検証してみたら式に誤りがありました。
正しい式は、(赤字部分が修正箇所)

Let([
   $n=7*(Get(計算式繰り返し位置番号)-1);
   $f=0 & Substitute(10^7-1;9;"&Let([$n=$n+1];\";\"&日計表示フィールド[$n]+0)")
];
  Evaluate("Sum(" & Evaluate($f) & ")")
)

Offline

#16 2015-04-09 21:19:10

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

Hiro wrote:

済みません、実際に自己検証してみたら式に誤りがありました。
正しい式は、(赤字部分が修正箇所)

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

#17 2015-04-09 22:56:00

Hiro
Member

Re: カレンダーのように1週間の合計の計算方法

集計用自己リレーション「データテーブル2」とルックアップ用リレーション「データテーブル」の「日別」条件に「種類別」条件を追加します。
結果として、「日計」を「種別日計」へ替えて、それを先の式に適用すれば良いかな。

Offline

#18 2015-04-09 23:23:40

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

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

#19 2015-04-10 10:37:01

チポ
Member

Re: カレンダーのように1週間の合計の計算方法

私の提案、今のトライと平行では荷が重たいでしょう。

今のが終わってから、ご要望が有ればレスいたしますよ。

Offline

#20 2015-04-10 12:09:50

旅人
Member

Re: カレンダーのように1週間の合計の計算方法

>全店同時表示というよりは店舗は気にせず同じ日に同じ商品がどれだけでたかがわかればいいです。
>この6つの週を1つのレイアウトで表示するのはどうしたらよいのでしょうか。

手抜きですけど、こんなのではダメかな?
http://pupld.net/28/150410/flhvjlmlse/index.cgi
売上集計.fmp12
検証不十分

Offline

#21 2015-04-10 13:18:34

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

チポ様 お気遣いありがとうございます。
おっしゃる通りですね。
いろいろなパターンをやってみたいとのことから欲張ってしまいました。
改めてお声かけさせていただきます。

Offline

#22 2015-04-10 13:25:29

kazu10
Member

Re: カレンダーのように1週間の合計の計算方法

旅人様 サンプルありがとうございます。
思い描いているものでございます。
スクリプトを使って集計されるのですね。
私には少しハードルが上がってしまいましたが、トライしてみます。
作っていただいたのに、大変申し訳ないのですが、この場合の週の合計はどのように作ればよいでしょうか?
週の合計あれば完璧です。

もしよろしければ週の合計入ったものを作っていただけると本当にありがたいです。
恐れ入りますがよろしくお願いします

Offline

#23 2015-04-10 13:55:10

旅人
Member

Re: カレンダーのように1週間の合計の計算方法

集計テーブルで=Sum(結果)という繰り返しの横合計の計算フィールドを作って、
表示レイアウトの結果の右横に置くだけですけど。

スクリプトで集計しているのではなく、スクリプトでは全品名の5週分の
組合せ(3品目×5週=15レコード)を作っているだけです。

分類値一覧はカスタム値ではなく売上テーブルの分類フィールドにして下さい。
分類が増えてもいいようにしたつもりでしたが、ここの変更を忘れていました。

Offline

#24 2015-04-10 14:21:15

Hiro
Member

Re: カレンダーのように1週間の合計の計算方法

書いていたら、旅人さんが既にレスされてましたが、一応!

#1で希望された集計表形式には、旅人さんの提案いいですネ。(^^
別途集計専用テーブルに希望表形式に則した必要レコード(種類数3x週数6=18レコード)をスクリプト生成。それを集計レイアウトでソート表示。
この方法だと、質問の種別週計計算も楽チン、単に、 Sum(集計テーブル::結果) だけ。 (ココで、結果は種別日計ルックアップ計算・繰り返し[7]フィールド)

老婆心ながら、実用には多少ブラシアップが必要かな。
・年月を指定すれば、カレンダー日付と週配分は自動計算へ。
・種別値一覧はフィールド値から自動更新取得へ。
・カレンダー週内の隣接月日は集計から排除へ。

Offline

#25 2015-04-10 14:29:50

旅人
Member

Re: カレンダーのように1週間の合計の計算方法

一応、付け足し再アップ
http://pupld.net/28/150410/zc8m25sobr/index.cgi

Hiroさん
私、昔から日付関連は特に苦手なので・・・

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 635.71 KiB (Peak: 668.62 KiB) ]