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

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

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

You are not logged in.

Announcement

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


#1 2015-03-10 23:18:18

桜餅
Guest

Shin様の集計サンプルについて

お世話になります。

日にちごとに各品番の集計表を作りたいと思い、「クロス集計」で検索をして、Shin様のサンプルが理想のかたちでした。

[99741] クロス集計してみました。複数年の合計を表示
http://www.russ.jp/stepbbs/step.cgi?mode=view&no=99741

上記の相談者様は月単位での集計のようですが、私の希望は日にち単位での集計で、
いざ、自分の条件に合わせてみようと挑戦しましたが、知識が及ばず全く進みまずこちらで相談させていただくことにしました。

【商品テーブル】
商品ID ・・・ シリアル番号
商品名
商品品番

【入出庫テーブル】
商品ID
日付
繰り返し日付 ・・・ 計算式[30]:非保存 GetValue ( ValueListItems ( Get ( ファイル名 ) ; "日付一覧" ) ; Get ( 計算式繰り返し位置番号 ) )
繰越在庫 ・・・ ファイルメーカー導入時にカウントした初期在庫
入庫数
出庫数
在庫数 ・・・ 計算式[30]:非保存  繰越在庫+入庫数-出庫数
在庫数_・・・ 計算式[30]:非保存  Case (  日付[1] = 繰り返し日付 ; 在庫数[1] )
s_在庫数_ ・・・ 集計[30]  在庫数_合計

○リレーション
商品テーブル::商品ID = 入出庫テーブル::商品ID

ここまで作ったところで、集計開始の1日目しか繰越在庫数が反映されず、2日目以降は単純に 入庫数-出庫数 の値しか表示できませんでした。

・ 前日までの在庫数を反映させるにはどうしたらよいですか?

初歩的な質問かと思いますが、ご教示いただけますようお願いいたします。
win7 ・ FMP13 です。
よろしくお願いいたします。

#2 2015-03-11 18:08:21

Shin
Member

Re: Shin様の集計サンプルについて

2日目以降の在庫数は、繰越在庫数+その日の入庫ーその日の出庫、という事で良いのですか。
普通は、前日在庫数+その日の入庫ーその日の出庫 という計算になり、1日目だけが特例として、繰越在庫数+その日の入庫ーその日の出庫 という式になるはずです。
https://www.dropbox.com/s/wd9ygopbfbhaf … 7.zip?dl=0

前のスレッドの集計意図とは、全く異なる集計ですので、参考にならないはずですが。

また、単に時系列で横表示をしたいのでしたら、1行ポータルを並べた方が良いかも知れませんよ。

Last edited by Shin (2022-10-16 08:27:43)

Offline

#3 2015-03-11 22:11:26

桜餅
Guest

Re: Shin様の集計サンプルについて

Shin様 ご指導ありがとうございます。
サンプルまで作っていただいてありがとうございました。

説明が下手な上に集計のことも理解できておらず、申し訳ありません。

> 2日目以降の在庫数は、繰越在庫数+その日の入庫ーその日の出庫、という事で良いのですか。
> 普通は、前日在庫数+その日の入庫ーその日の出庫 という計算になり、1日目だけが特例として、繰越在庫数+その日の入庫ーその日の出庫 という式になるはずです。

すみません、「2日目以降に繰越在庫数が反映されない」というのは間違っていました。
前日の在庫数が加算されていない、ということで、Shin様のご指摘の通りで、2日目以降は 前日在庫数+その日の入庫ーその日の出庫  になることを理解しました。

前日在庫数の出し方がわからなかったのですが、リレーションで前日の在庫数を特定して、それをルックアップするのですね。
ルックアップ機能はよくわからないので使ったことがなかったのですが、とても便利ですね。
とても勉強になりました。

お蔭様で「繰り返し日付」と「商品ID」をそれぞれ小計対象ソートのレイアウトを作って、商品IDごとの日別在庫数も表示できるようにりました。


> 前のスレッドの集計意図とは、全く異なる集計ですので、参考にならないはずですが。

横に日付、縦にIDの集計レイアウトで、テーブルを増やさない方法という点で理想形でした。
前のスレッドのように前月、次月ボタンにも挑戦したいと思っています。


> また、単に時系列で横表示をしたいのでしたら、1行ポータルを並べた方が良いかも知れませんよ。

ポータルでのレイアウトも作ってみます。

これから、じっくりとサンプルで学習させていただきます。
また壁にぶち当たるかもしれませんので、「解決」までもう少しお時間を下さい。

ありがとうございました。

#4 2015-03-12 18:53:20

Shin
Member

Re: Shin様の集計サンプルについて

ルックアップを使えるのは、日付順に入力された時だけです。途中の日付を挿入した時には、その後日付で再ルックアップする必要が有りますので、ご注意を。
その作業を省くには、ルックアップではなく、関連レコードとして参照すれば良いのですが、1年ほど運用していると、非常に遅くなる可能性があります。ルックアップでしたら、そのレコード内だけで処理が完結するので、処理速度が落ちる事は無いと思います。

Offline

#5 2015-03-13 21:09:49

桜餅
Guest

Re: Shin様の集計サンプルについて

Shin様 ありがとうございます!

ちょうど、途中の日付を挿入してみたら在庫数が修正されないので悩んでいたんです!
お見通しですね^^;

過去に同じ日付が存在していない場合は、再ルックアップで前日在庫数が修正されました。
ルックアップの仕組みがわかってきたような気がします。
ありがとうございました。

また次の壁にぶつかってしまい、解決できませんでした。
同じ日付、同じ商品ID が複数存在する場合の前日在庫数はどのうようにしたらよいでしょうか?

この場合はルックアップ機能は使えませんか?

同じ日付がある場合は、スクリプトで修正することになりますか?
リレーションを日付ではなくレコード番号にてみたら、最初の前日在庫数がおかしくなってしまいまいsた。

引き続きご指導いただけますようお願いいたします。

#6 2015-03-14 00:13:03

Shin
Member

Re: Shin様の集計サンプルについて

やっぱり同日付同商品があるのですね。
日付ごと、商品ごとでリレーションを使って集計し、その値を全体で集計する様に変更したサンプルです。
https://www.dropbox.com/s/wd9ygopbfbhaf … 7.zip?dl=0

Last edited by Shin (2022-10-16 08:27:14)

Offline

#7 2015-03-14 17:47:57

桜餅
Guest

Re: Shin様の集計サンプルについて

Shin様 お世話になっております。

サンプルありがとうございますm(_ _)m
ボタンで年月を移動できる方法もありがとうございました。
後ほどしっかり勉強させていただきます。

サンプルで過去に入力済みの日付を後から追加してみたのですが、「前日在庫数」は同日既存の「在庫数」ではなく、前日の「在庫数」がルックアップされてしまい、「在庫数」は空欄になってしまうことで悩んでいましたが、全体で集計をしているからなんですね。
よーーーーやく理解できました!!!!
すごいすごい!
なるほどなるほどです!!!

取り急ぎお礼まで。。。
ありがとうございました。

#8 2015-03-17 22:43:35

桜餅
Guest

Re: Shin様の集計サンプルについて

Shin様 お世話になっております。

お蔭様でようやく、年月スクリプトの内容と「繰り返し日付」の計算式を理解できました。
お礼が遅くなり申し訳ありませんでした。

小学生の頃に習った「余り」をすっかり忘れていて、電卓に表示された小数点以下とにらめっこをしていました^^;
それにしてもすごい技術ですね。
私では到底思いつかない技に感動しました。
ありがとうございました。

最後にもう2つ質問させて下さい。

1. 入出庫テーブルへのデータの登録は日にちが前後することが多く、再ルックアップをする場合は全データを
   対象とするのではなく、追加登録された品番だけを絞り込んでからの方がよいですか?

2. 1行ポータルで表示した方がよいかも、とのアドバイスをいただいて、ポータルにも挑戦してみて、無事に表示されました!
   ポータルに表示するフィールドは繰り返しではない「在庫数」を設定しました。   
   ポータルの方がおすすめの理由は、繰り返しフィールドに在庫数を入れなくてもよいからですか?

何度も質問を重ねてしまい、すみません。
お時間がありましたら、ご指導いただけますようお願い致します。
宜しくお願い致します。

#9 2015-03-17 22:58:36

Shin
Member

Re: Shin様の集計サンプルについて

全データを対象にした方が抜けが無くていいでしょうが、時間がかかります。
品番で抽出しておいた方が早く終わります。
1行ポータルは、日付に抜けが有ると適用できませんので、おそらく駄目かも。

Offline

#10 2015-03-17 23:07:37

桜餅
Guest

Re: Shin様の集計サンプルについて

Shin様 お世話になっております。
早速のご回答ありがとうございます。

品番で抽出ですね。
それでやってみます!

ポータルは日付に抜けがあると適用できないのですね。
では、教えていただいた繰り返しフィールドで進めたいと思います。

とても勉強になりました。
本当にありがとうございました。
今後ともどうぞ宜しくお願い致します。

#11 2015-04-06 11:15:47

桜餅
Guest

Re: Shin様の集計サンプルについて

お世話になっております。
一旦、【解決】とさせていただいたのですが、また行き詰ってしまったので再度相談させて下さい。

Shin様に作っていただいたサンプルで集計表を作成しております。
その節はありがとうございましたm(_ _)m

Shin様に作っていただいた「テーブル」レイアウトとは別に、集計結果だけを表示するための「在庫表」レイアウトを作成して、サンプルと同様にパートとフィールドを設定しました。

今までエクセルで入力していた入出庫のデータをインポートして、「在庫表」レイアウトの画面をスクロールしようとすると、ファイルメーカーが「応答なし」の状態になってしまいます。
しばらく待つと「応答なし」は消えるのですが・・・。
データが多過ぎるのか、PCのスペックが非力なのかわかりませんが、Shin様の「テーブル」レイアウトではサクサクと動いています。

データの量は、商品IDが全部で約350
昨年の6月からの入出庫データが約33,000レコードあります。

・レイアウトによって重くなることもあるのですか?
・ボディパートに入庫、出庫などのフィールドが設置されている方がサクサク動くのはどうしてですか?

ネットで調べてみたのですが、わからりませんでした。
ご指導宜しくお願いいたします。

#12 2015-04-06 16:40:22

Shin
Member

Re: Shin様の集計サンプルについて

現場で見てみないとわかりませんが、スクロール毎に、2000レコード程度の計算が発生するためではないかと思います。
高速なマシンで処理するしか無いかもしれません。

Offline

#13 2015-04-06 17:51:00

桜餅
Guest

Re: Shin様の集計サンプルについて

Shin様ありがとうございます。

> 現場で見てみないとわかりませんが、スクロール毎に、2000レコード程度の計算が発生するためではないかと思います。

なるほど~。
レイアウトを読み込む時だけでなく、スクロール毎にも計算が発生するんですね。

重ねての質問で申し訳ないのですが、同じデータ数でも、Shin様の作ってくださった「テーブル」レイアウトではサクサク動くんです。
「応答なし」となってしまうレイアウトと比べて、異なるのは、「テーブル」レイアウトの方ではボディパートに入出庫のレコードがあり、「応答なし」レイアウトではヘッダと商品IDをソート対象とする小計パート、、フッタのみを配置しています。
ボディパートの入出庫レコードを表示している間に計算式をこなしているからサササッと表示されるのですか?

もしよろしければ引き続きご指導いただけますようお願い致します。

#14 2015-04-06 18:01:33

Shin
Member

Re: Shin様の集計サンプルについて

参照する関連レコード数の差でしょう。
ボディーを表示させないと、計算対象となるレコード数は格段に増えますね。

Offline

#15 2015-04-06 19:58:28

桜餅
Guest

Re: Shin様の集計サンプルについて

Shin様ありがとうございます。

> 参照する関連レコード数の差でしょう。

そういうことなんですね。
すっきりしました!

では、集計結果を必要としない古いレコードは退避させてみます。

何度もご丁寧に教えていただいて本当にありがとうございました。
今後とも宜しくお願いします。

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: 607.57 KiB (Peak: 624.48 KiB) ]