過去の桐井戸端BBS (桐ver.8)
20945 商品の数値を減らすとその商品を構成する部品数も減るようにしたい 倉庫番 2003/06/19-00:09
桐ver.8において在庫管理を作成しようとしています、
商品Aを1減らすとその商品に必要な部品A・部品B・部品Cを指定した数だけ減らすというような処理の方法を教えてください。
現在の状態はこのような感じです、

製品型番 商品名 部品名 在庫数
0001   商品A  完成品  1
0002   商品A  部品A  3
0003   商品A  部品B  8
0004   商品A  部品C  5

このように表を作成して一覧表フォームで表示しています、商品Aの完成品を1減らして0を入力した場合、
部品A〜Cをそれぞれ指定した1・2・3個減らすということは可能でしょうか?
ご教授お願い致します。
20946 Re:商品の数値を減らすとその商品を構成する部品数も減るようにしたい 宮城 2003/06/19-01:25
記事番号20945へのコメント
倉庫番さん、こんばんは。在庫管理お疲れさまです。

さて、お書きになっている前提に勝手にもうちょっとだけ追加してこんなことはできますが・・・というのを書いてみます。
(実はこれなら桐というよりは Excel)

   A    B   C    D    E

1      製品数 部品A  部品B  部品C

2 在庫数       3    8    5

3 商品A   n  −1*B3 −2*B3 −3*B3
4 商品B   m  −1*B4 −1*B4 −2*B4

5 在庫数       式    式    式

式(C5の例) SUM(C2:C4)

さて、いかがでしょうか?
自分で気になるのは、まず、すべての商品を構成する部品がはたしてこの程度の「列」で記載しきれるようなものかどうかとか
(あえてこう書いていますが、実はどうやろうが「記載しきれるようなもの」であってくれないと困るのです。
「標準使用量」の基準が記載不可能ならギブアップ。)、
「商品」は数行で展開できるものかどうかとか。

しかし、お示しの「例」の要求は満たしてしまって(?)いますね。(^^;;

もうひとつ。これは「設定」とか「式」とかいう問題ではありません。
広い意味でのロジックをどう組むかといういうことです。
やりようは(困ったことに)はいろいろあります。

20949 Re:商品の数値を減らすとその商品を構成する部品数も減るようにしたい ONnoji 2003/06/19-10:27
記事番号20945へのコメント
倉庫番さん、こんにちは。

私はこのような完成品と部品の関係のデータを扱ったことはありませんが…
いわゆる「部品展開」という問題のようですね。

例えば、以下のように商品Aは{部品A,部品B,部品C}で構成されているとします。

0001 商品A 完成品
├ 0002 部品A n個
├ 0003 部品B m個
└ 0004 部品C y個

これを表のデータで表現すると…

表定義{商品ID,商品名,部品ID,部品名,数量}のようになりますので、

0001 商品A完成品 0002 部品A n個
0001 商品A完成品 0003 部品B m個
0001 商品A完成品 0004 部品C y個

部品の点数分の行を作って表現します。

※1行で複数項目を作るのはデータ操作が大変なので止めた方が無難です。

基本的な考え方としては…
「商品A完成品」をひとつ減らした場合には、

0001 商品A完成品 0002 部品A n個
0001 商品A完成品 0003 部品B m個
0001 商品A完成品 0004 部品C y個



在庫の表( .tbl )で商品IDで照合して、数量を減算する併合操作をすればいいと思うのですが…

このように部品展開の場合には簡単に計算式で求めることは難しいので、
予め展開データを用意しておき、併合処理するのがよいと思います。

今回の例は、「親→子」の1階層の関係ですから単純ですが、
「親→子→孫→ひ孫」のように階層が深くなった場合には、
さらに関係するデータを探索する必要がありますので少し複雑になると思います。

外していたらすいません。

20962 Re:商品の数値を減らすとその商品を構成する部品数も減るようにしたい 悲しげ 2003/06/19-19:01
記事番号20945へのコメント
どもっ、倉庫番さん

>商品Aの完成品を1減らして0を入力した場合、

これはあまりお勧めしません。
この変更が発生した時点で、その差数を取得する必要がありそうです。
とすれば、その発生時点をどのように掌握するのかの問題も出てきそうだからです。
処理方法は、#20949でONnojiさんが仰るとおり併合/減算を使うことになろうと思いますが、
上記の点からして、私なら別途、在庫変数作業表を経由させると思います。
減らすのなら、その作業表で -1 なり +3 なりの値を入力し、入力作業が完了した時点でその表を使って
在庫マスターとなる表を併合/加・減算する(プラス値入力でもって減算と見なすなら
減算、マイナス値入力するのなら加算、以下同)。

似たようなことを昔やったことがあります。最近やってないし、
当時としても(今回のように1:多ではなく)1:1だったので、
考え足らずのところがありそうですが、以下考えたところを書いてみます。
(一部ONnojiさんの記述を借用)

商品(完成品).tbl
商品ID 商品名    数量
0001 商品A完成品 10
0002 商品B完成品  8

商品(部品).tbl
商品ID 商品名    数量 比 親ID  仮項目
1001 商品A部品1 10 1 0001
1002 商品A部品2 15 3 0001
1003 商品A部品3 24 8 0001
2001 商品B部品1 10 2 0002
2002 商品B部品2 15 5 0002

完成品表の方は単なる併合減算(加算)でいいと思います。

下の部品表の方は、親である完成品の加減数が1と限らないとすれば、
単なる併合減算(加算)は使えないと思う(?)ので、この場合は、
[仮項目]に併合複写を使ってみることにします。
で、併合後に次の置換でもって、[数量]値を取得する。
 [数量]=[数量]−[比]*[仮項目] (場合によっては−ではなく+)
あ、この例の併合では[親ID]照合[商品ID](←作業表上の)となります。
それと、この[仮項目]は併合前に空に置換しておく必要が有りますね。

完成品と部品をひとつの表にしたい場合は、処理はもっと複雑になります
(別表に書き出した作業表を利用する等)。

20963 Re:商品の数値を減らすとその商品を構成する部品数も減るようにしたい 悲しげ 2003/06/19-19:04
記事番号20962へのコメント
訂正(^^;)

×なろうと思いますが、上記の点からして、私なら別途、在庫変数作業表
                             ↓
○なろうと思いますが、上記の点からして、私なら別途、在庫変更作業表

20966 Re:商品の数値を減らすとその商品を構成する部品数も減るようにしたい 都筑 2003/06/19-22:26
記事番号20945へのコメント
初めて書き込みをします
私は仕事で社内の生産管理システムを立ち上げてきましたが、その中で今回の様な
ケースは以下の様に処理しています。

まず基本的に部品表(商品マスタ)、と部品構成表(商品構成表)を作成します

<部品表>
図番、品名、仕入先code、単価、ロットサイズ、手番・・・・・・

<部品構成表>
親図番、子図番、親図番に対する子図番の必要数・・・・・・

上記2つのテーブルを使い所要量展開(商品展開)処理を実行します。
※この処理の作りによって処理時間が大きく左右しますし、一番大切な処理ルーチンになります。
 細部は説明しませんが、簡単に言うと以下の様な手順で処理します

1.部品構成表の親図番を対象に完成品の図番を絞り込みします。
2.次にその子図番にて親図番を対象に絞り込みします。
 この繰り返しにて部品所要量を把握できます、もちろん絞り込んだレコードが
 複数存在する場合は、そのレコード分展開処理を実行します。
3.部品所要量を把握したところで、在庫台帳を併合削除し在庫を減らします。

所要量展開処理はけっこう難しいと思います。私は部品構成表を親図番、子図番・・にて構成しましたが、
これが一番シンプルで部品構成がいくら深くなっていても展開処理出来ます。
一つのレコード内へ部品構成を作ると融通性が無く、又重複したデータを入れる事にもなります。

ちなみに、私はこの所要量展開処理を結合処理を使ってレベル単位に処理しています。
この方法が処理スピードを得る為には一番良かったので!!

以上参考になれば幸いです
20985 Re:商品の数値を減らすとその商品を構成する部品数も減るようにしたい 倉庫番 2003/06/20-16:32
記事番号20946へのコメント
宮城さん、ONnojiさん、悲しげさん、都筑さん返答が遅くなって申し訳ありません
皆さんのアドバイスを参照しながら四苦八苦したところなんとか思ったとおりの処理を実現できました。
ご教授どうもありがとうございました。
現在さらに機能向上を図ろうと完成品の発注数n個に必要な部品数を求め、
それを部品在庫数に引き当て処理し、部品在庫数が足りているものは減算し、発注数に対し
部品在庫数が足りない場合は何個足りないのか(何個発注する必要があるのか)を表示した後、
部品在庫数は0にする(-2個とかだとわかりづらいので・・・)という処理を行おうとしています、
併合処理を応用するということはわかるのですがこれまた悪戦苦闘しています、
この処理に対してもアドバイス頂けないでしょうか・・・。
20989 「逆展開」にも挑戦するんですね。 ONnoji 2003/06/20-17:19
記事番号20985へのコメント
倉庫番さん、こんにちは。

ONnojiです。

>皆さんのアドバイスを参照しながら四苦八苦したところなんとか思ったとおりの処
>理を実現できました。

それはよかったですね。v(^^)v

>現在さらに機能向上を図ろうと…

「部品展開」だけでなく、
現在の部品数から製品が何個作れるかという「逆展開」にも挑戦するんですね。
そうして、不足の部品を発注するという構想ですね。

これってパソコン利用の王道ですね。
ぜひ頑張ってください。(^^ゞ

>しています、この処理に対してもアドバイス頂けないでしょうか・・・。

ところで、別の質問は新しい投稿でという掲示板のお約束ですから…
新しい投稿で質問してくださいね。


戻る