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

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

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

You are not logged in.

Announcement

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


#1 2013-11-18 01:43:18

apo
Member

ある日付の棚卸数や売上数、仕入数からある日付の在庫数を割り出す

またおねがいします。

ある日付にある商品の棚卸を行い、その時点での在庫数が分かりました。それからその商品の過去や未来の売上数や仕入数から、
別の日付の時点での在庫数を割り出すのには以下の計算で求まると思います。

集計日が棚卸日より過去なら、棚卸数
+集計日から棚卸日の前日までの売上集計
ー集計日の次の日から棚卸日までの仕入集計

集計日が棚卸日以降なら、棚卸数
−棚卸日から集計日の前日までの売上集計
+棚卸日の次の日から集計日までの仕入集計

(当日の仕入数は当日、売上数は次の日の在庫数に反映される決まり)

商品テーブルに商品名を関連フィールドとして売上テーブル、仕入テーブルがあるとして、
棚卸数は仕入テーブルの種類フィールドに棚卸分としてある日付に入力されているのですが、
この場合、上の各々の集計期間の範囲である場合1を返す計算フィールドを各々テーブルに作って、
リレーションシップ上に集計用商品テーブルを作り、そこに二つグローバルフィールドを作って
各々棚卸分や1を入れて棚卸分種類絞り用仕入テーブル、各集計期間別売上/仕入テーブル(四つ)らに
繋いで絞り、計算フィールドでsum()を使って在庫数を出す様にしようと思いますが、
何か凄く回りくどい事をしている気もしますので、これより速いもしくは効率的な方法で
思った日の在庫数を出す方法があれば教えてください。

Last edited by apo (2013-11-18 17:27:45)

Offline

#2 2013-11-18 09:18:46

Shin
Member

Re: ある日付の棚卸数や売上数、仕入数からある日付の在庫数を割り出す

逐次計算を行おうとしておられるようですが、レコード数が増えてくると計算が遅くなります。
各伝票毎に、売上日として翌日をもたせたフィールドを作っておきます。
集計日からは、日付範囲を条件としたリレーションをはり、その中で各々でSum()で合計をとり、加減する、という計算にされるといいと思います。

Offline

#3 2013-11-18 17:27:08

apo
Member

Re: ある日付の棚卸数や売上数、仕入数からある日付の在庫数を割り出す

ありがとうございます。

ひとつすいません。例えば仕入テーブルに仕入日の翌日を計算フィールドで出し、それを集計用の売上日とすると言う事ですか?
(当日の仕入数は当日、売上数は次の日の在庫数に反映される決まり)という文章からそれを考えて頂いたと思いますが、
ある日の在庫数集計は昨日の売上数が影響されて来るという事なので、翌日でなく昨日という事ではないのでしょうか?

で商品テーブルの棚卸日付から仕入テーブルの日付に三種のリレーション(>と<と=)分のセットをこさえ、商品テーブルの
在庫数計算フィールドで各々sum()し加減するという事ですか?
またそれは集計を行う商品テーブルにこさえるのではなく、仕入テーブルに作るのは、集計回数が減るからという事で宜しいのでしょうか?

Last edited by apo (2013-11-18 17:30:58)

Offline

#4 2013-11-19 13:45:06

apo
Member

Re: ある日付の棚卸数や売上数、仕入数からある日付の在庫数を割り出す

幾つか変更しある程度できあがりました。Shinさんの意図通りかどうかは分かりませんが、、、。

まず商品テーブル(それは集計場所でもある)の集計日付>仕入テーブル1の日付、
商品テーブルの棚卸日付<=仕入テーブル1の日付、
商品テーブルの商品名=仕入テーブル1の商品名、
また、商品テーブルの集計日付>=仕入テーブル2の日付、
商品テーブルの棚卸日付<仕入テーブル2の日付、
商品テーブルの商品名=仕入テーブル2の商品名、
の通りにリレーションさせました。

そして仕入テーブルに仕入日-1の集計用売上日計算フィールドを作り、
それと売上テーブルの日付を繋ぎました。(前営業日の売上日を仕入日-1で出す事に問題が起こりまして、
他の質問として出させて頂きましたが、とりあえず、、)

で商品テーブルの商品数計算で
Case (
棚卸日付 > 集計日付; 棚卸数 - Sum(仕入テーブル1::今日の在庫数プラマイ);
棚卸日付 = 集計日付; 棚卸数;
棚卸日付 < 集計日付; 棚卸数 + Sum(仕入テーブル2::今日の在庫数プラマイ);
)

をすると棚卸数、棚卸日、集計日、どの値を変えても商品数計算に反映される様になりました。
おおsumは狭い範囲を一度しか走りませんね。こういう事でしょうか?

Last edited by apo (2013-11-19 13:46:32)

Offline

#5 2013-11-21 01:22:24

apo
Member

Re: ある日付の棚卸数や売上数、仕入数からある日付の在庫数を割り出す

すいません問題が起こりました。。

前営業日の売上数を不等号リレーションで求める場合、以下の問題が起こりました。
・ある仕入日と仕入日の間の日付の売上が二つ以上ある場合、不等号一つのレコードしか計算されない。
・最終仕入日より後の売上日のレコードが計算されない。

例えば仕入テーブルに以下のレコードがあり、
日付:4/1 商品名:みかん 数量:2
日付:4/1 商品名:みかん 数量:3
日付:4/3 商品名:みかん 数量:2
日付:4/4 商品名:みかん 数量:2

売上テーブルに以下のレコードがあります。
日付:4/1 商品名:みかん 数量:1
日付:4/1 商品名:みかん 数量:2
日付:4/5 商品名:みかん 数量:2
日付:4/5 商品名:みかん 数量:2

上の不等号リレーションのままだと商品テーブルではこうなってしまいます。
日付:4/1 商品名:みかん 仕入数量:2 売上数量:0 合計:2(3/31以前に売上ないから)
日付:4/1 商品名:みかん 仕入数量:3 売上数量:0 合計:3 (3/31以前に売上ないから)
日付:4/3 商品名:みかん 仕入数量:2 売上数量:1 合計: 1(4/1に最後に登録されたレコードの売上数量)
日付:4/4 商品名:みかん 仕入数量:2 売上数量:1 合計: 1(4/2の売上はないので、また4/1に最後に登録されたレコードの売上数量が載る)

以下の様にどちらかの登録レコードの日付に必ずプラマイを計算してくれる表を作るにはどんなリレーションが必要でしょうか?
(申し訳ないですが、今頃Shinさんがおっしゃっていた売上テーブルに翌日フィールドを付ける理由はなんとなく分かりましたが、、。)
日付:4/1 商品名:みかん 仕入数量:5 売上数量:0 合計:5 (3/31以前に売上ないから)
日付:4/3 商品名:みかん 仕入数量:2 売上数量:3 合計:-1 (4/1の二つの売上の合計と)
日付:4/4 商品名:みかん 仕入数量:2 売上数量:0 合計:2 (上記の4/1超してから4/4未満の間に売上がないから)
日付:4/6 商品名:みかん 仕入数量:0 売上数量:2 合計:-2 (残りの売上レコードの為)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 519.17 KiB (Peak: 523.71 KiB) ]