みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
お世話になります。
FMP18使用しています。
在庫管理のシステムを構築中です。
利用者テーブル
商品テーブル
商品利用実績テーブル
を作成しており
商品テーブルに在庫確認基準日と在庫数
商品利用実績テーブルに利用数を入力しようと思っています。
そこで質問があるのですが
商品Aを何度か使用した場合に、在庫確認基準日から今日までの間の使用数がカウントできますでしょうか?
期間を絞ったカウント方法があれば教えて頂ければ幸いです。
宜しくお願い致します。
在庫確認基準日とは、棚卸日と同じ意味でしょうか。
商品利用実績とは、出庫という意味でしょうか。それなら入庫もありますね。
棚卸日を期末として、例えば期末日に在庫をマイナスにし、おそらくその翌日(期首日)に同数を入庫する様なレコードをそれぞれ作っておきます。最初のレコードは,初期在庫数を繰入とします。
入庫 - 出庫 + 棚卸
という計算フィールドを作っておき、それを合計する集計フィールド(現在)を作ります。これが在庫数になります。
この構造ですと、棚卸日ごとの期間で在庫数の動きが見えます。また、商品テーブルからポータルで表示し,フィルターで期間を区切れば、その期間の集計ができます。
例えば、月末棚卸しでしたら、こんなデータ構成になります。
日付 商品 入庫 出庫 繰越 在庫
3/31 AAAA -30 0
4/01 AAAA 30 30
4/01 AAAA 10 40
4/02 AAAA 20 20
4/30 AAAA -20 0
5/01 AAAA 20 20
この構成ですと,月単位でレコードを抽出しても在庫数は常に正しく、連続月とか年単位で抽出しても、繰越数は相殺されるので、在庫数は正しく計算されています。途中の繰り越しレコードが目障りでしたら、最初の繰入れレコード以外を対象外にすれば影響がありません。
Last edited by Shin (2023-01-07 11:22:09)
Offline
shin様
返信ありがとうございます。
頭の中がこんがらかっているのですが、
この場合
商品利用実績テーブルでイベント(出庫・入庫・棚卸)があった場合に1レコードという認識で宜しいでしょうか?
1イベントで1レコードです。紙運用でも、1イベントで1枚書きますね。(棚卸しだけは、1回の柵おろしで2イベントが発生することになります)
Last edited by Shin (2023-01-09 15:15:29)
Offline
現状のままの解決法です。
商品テーブルで本日を入力する計算フィールド・グローバルを作ります。
リレーション
商品テーブル 商品利用実績テーブル
商品 = 商品
and
在庫確認基準日 < 日付
and
本日 >= 日付
これで、商品テーブルで計算フィールド
Sum ( 商品利用実績テーブル:: 利用数 )
で期間内の利用数の合計が求められます。
「在庫」と「利用」
と使われていますが、
商品のレンタルのようなものでしょうか?
> 使用数がカウントできますでしょうか
利用数の合計ですよね。
「カウント」
はFMで定義された用語で、件数のことを言います。
このような使い方は混乱の元になりますね。
Offline
shin様
返信ありがとうございます。
現在、作成しています。
また何かありましたら相談させてください。
チポ様
返信ありがとうございます。
現状でも可能なんですね。
ありがとうございます。
在庫と利用は
利用者様のオムツの使用になります。
こちらも設定してみます。
チポ様
同じ設定にしてやっているのですが
出来ません。
新規で一から作成したものでしたら出来たのですが
既存のモノですると合計数が反映されません。
リレーションやテーブルのミスはないとは思うのですが
他のテーブにリレーションをさせていることが問題でしょうか?
テーブルオカレンスをちゃんと合わせていますか?
ぐらいかな。。
Offline
チポ様
再確認してみましたが、これ以外確認するところはありますでしょうか?
リレーション
http://deai.mokuren.ne.jp/up/src/up7901.jpg
リレーション編集画面
http://deai.mokuren.ne.jp/up/src/up7902.jpg
追記
商品テーブルから、
商品利用実績テーブルを参照したいのですよね。
この場合、
リレーションシップグラフで参照する側の商品テーブルはデフォルトを使い、
参照される側の商品利用実績テーブルをコピーして照合させます。
テーブルオカレンスの使い方にご注意を。
Offline
荒削りですが、こんな動きでどうですか。
https://www.dropbox.com/s/ia9qw71g0evbx … 2.zip?dl=0
商品テーブルに在庫確認基準日と在庫数を入れてしまうと、次の在庫確認で過去の数値を消してしまうことになります。それでは過去の作業を無にしてしまいます。それを含めて保存集計できます。
Last edited by Shin (2023-02-04 16:14:35)
Offline
チポ様
おっしゃる通りで、テーブルオカレンスがめちゃめちゃでした。
修正したら治りました。
現在のやり方ですと、リアルタイムの在庫数と使用数が反映されるため
棚卸時点の記録としては反映されないように思えます(私の認識違いでしたら申し訳ございません)
別のテーブルに棚卸時のレコードをコピーペーストするのはナンセンスでしょうか?
Shin様
サンプルありがとうございます。
拝見しました。
私には難しくどこがどうなっているのか直ぐにはわかりそうにないです。
じっくり分析してみます。
棚卸時点のデータが反映されるので、ミスがあった場合は記録として残るのが良いですね。
> 現在のやり方ですと、リアルタイムの在庫数と使用数が反映されるため
> 棚卸時点の記録としては反映されないように思えます(私の認識違いでしたら申し訳ございません)
これは、最初の、「商品Aを何度か使用した場合に、在庫確認基準日から今日までの間の使用数がカウントできますでしょうか?」をそのまま反映した動きですよね。
在庫確認データが入出庫と関係ないテーブルに単回で存在するため、そのような面倒な動きになってしまう上に、それを保存することもできない構造なのです。
ですから、私の提案している構造にすると、
> 棚卸時点のデータが反映されるので、ミスがあった場合は記録として残るのが良いですね。
棚卸しを含めた在庫管理の作業の記録としては、ごく普通の処理だと思いますが。
Last edited by Shin (2023-01-14 08:44:09)
Offline
Shin様
>ですから、私の提案している構造にすると
記録として残らないデータベースは意味がないですね。
Shin様の作成されてサンプルを展開してもう一度練り直してみます。
ありがとうございました。
Shin様
現在、サンプルを基に既存のデータに入力しているのですが
棚卸のスクリプトの中身で
最初の部分から
ウインドウ選択
までの処理が理解できないのですが
教えて頂けると幸いです。
If [ 商品入出庫テーブル::適用 = "棚卸" and not ( IsEmpty ( 商品入出庫テーブル::日付 ) or IsEmpty ( 商品入出庫テーブル::棚卸数 ) ) ]
変数を設定 [ $win ; 値: Get ( ウインドウ名 ) ]
関連レコードへ移動 [ 関連レコードのみを表示 ; テーブル: 「商品入出庫テーブル」 ; 使用するレイアウト: 「商品入出庫テーブル」 (商品入出庫テーブル) ; 新規ウインドウ ]
ウインドウを選択 [ 名前: $win ; 現在のファイル ]
レコード/検索条件確定 [ ダイアログあり: オン ]
ウインドウを選択 [ 名前: "棚卸処理" ; 現在のファイル ]
フィールド設定 [ 商品入出庫テーブル::適用 ; "繰越" ]
フィールド設定 [ 商品入出庫テーブル::棚卸数 ; - 商品入出庫テーブル::棚卸数 ]
レコード/検索条件複製
フィールド設定 [ 商品入出庫テーブル::適用 ; "繰入" ]
フィールド設定 [ 商品入出庫テーブル::日付 ; 商品入出庫テーブル::日付 + 1 ]
フィールド設定 [ 商品入出庫テーブル::棚卸数 ; - 商品入出庫テーブル::棚卸数 ]
ウインドウを閉じる [ 現在のウインドウ ]
現在のスクリプト終了 [ テキスト結果: 0 ]
End If
これの、2回のウインドウを選択の3行でしょうね。普通でしたら要らないように思いますよね。
この3行を無効にして実行してみるとどうなるか試してみてください。
Offline
shin様
今、その手前で行き詰っているのですが
スクリプトトリガを設定同じように
設定しているのですが、実行されません・・・。
設定するときに何か注意する点はありますでしょうか?
スクリプトデバッガーではどう動いていますか
Offline
エラーが無ければ、スクリプトはきちんと動いているということになりますが
ステップ動作でも、思惑通りの動きになっていますか。
Last edited by Shin (2023-01-20 10:56:03)
Offline
Shin様
一つ一つ確認していくと
テーブルが間違っていたことに気付き修正して無事できるようになりました。
ありがとうございます。
今、一覧日付フィルタの部分で
棚卸時の繰越日が反映されず悩んでいます。
また壁にぶつかったら相談させてください。
お世話になります。
Shin様
だいぶ形になってきました。
ありがとうございます。
現在、各標品の在庫数を一覧で表示したいと思っているのですが
ポータルで集計したものになると一覧で表示するのが難しく上手くいきません。
助言をして頂ければと思っております。
宜しくお願い致します
基準日以前のレコードを抽出します。
商品キーをキーとした小計パートを作り、商品名と入出庫の合計の集計フィールドのみを配置します。商品キーでソートすればいいです。
ただし、最終レコードが繰越レコードになると0になってしまうので、そのレコードのみは除外するようにします。
基準日以前の全レコードを使うのが処理としては簡単なのですが、対象レコードが膨大になってくると集計が遅くなります。全商品の棚卸しが同時でしたら、適当な棚卸しより後に制限すればいいです。もし、商品毎の棚卸し日が異なる場合は、処理が面倒になりますが、普通はこんな運用はないですよね。
Last edited by Shin (2023-01-24 21:35:45)
Offline
shin様
基準日以前というのはなぜでしょうか?
今小計パートで在庫数の所までなんとかいけました。
基準日(棚卸日)を値に入れて
トリガで
基準日以降を検索して表示させようと思っていますが
shin様の以前と記入されているので何でだろうと思っております。
補足して頂ければ助かります。
よろしくお願いいたします。
[ Generated in 0.010 seconds, 9 queries executed - Memory usage: 617.89 KiB (Peak: 650.8 KiB) ]