- ベストアンサー
アクセスで出荷管理の処理を効率化する方法
- 出荷管理の仕事をしている方向けのアクセスによる処理効率化の方法についてご紹介します。
- 具体的な例として、品番Aの注文番号と納品数を入力し、出荷数と納品残数を計算する処理を考えます。
- アクセスを使えば、複数件の処理もループさせることが可能です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です 出荷日の関係で調整しようかと、考えて作ったつもりなんですが・・・ 出荷日を分散して日付を、いろいろ入れていくとうまく動作しません^^; SELECT Tbl_注文伝票.品番, Tbl_注文伝票.注文番号, Tbl_注文伝票.注文日, Tbl_注文伝票.契約数, (SELECT Sum(Tbl_Sub.契約数) FROM Tbl_注文伝票 As Tbl_Sub WHERE (Tbl_注文伝票.品番=Tbl_Sub.品番) AND (Tbl_Sub.注文日<=Tbl_注文伝票.注文日)) AS 累積契約数, (SELECT Sum(Tbl_出荷伝票.出荷数) FROM Tbl_出荷伝票 WHERE (Tbl_出荷伝票.品番=Tbl_注文伝票.品番)) AS 累計出荷数, IIf([累積契約数]<[累計出荷数],[契約数],IIf(([累積契約数]-[契約数])<[累計出荷数],[契約数]-[累積契約数]+[累計出荷数],0)) AS 納品数, [契約数]-[納品数] AS 残納品数 FROM Tbl_注文伝票; で、とりあえず、累積から累計に変えて考えてあるのですが・・・注文が無いのに出荷があるとかは、別に入力上でチェックできるようにしていかないと、駄目でしょうね
その他の回答 (3)
- Dxak
- ベストアンサー率34% (510/1465)
質問の意味を理解するのに大変時間が掛ってます;; > 品番A とし 注文番号 1 納品数が100 > 品番A 注文番号 2 納品数が200 の部分が納品数と言うのが注文番号に対して受けた契約数だと考えて (納品数が、文章の途中で意味が違うのね;;) Tbl_注文伝票 品番 注文番号 注文日 契約数 A 1 2007/05/01 100 A 2 2007/05/15 200 Tbl_出荷伝票 品番 出荷日 出荷数 A 2007/05/20 150 から、クエリで SELECT Tbl_注文伝票.品番, Tbl_注文伝票.注文番号, Tbl_注文伝票.注文日, Tbl_注文伝票.契約数, (SELECT Sum(Tbl_Sub.契約数) FROM Tbl_注文伝票 As Tbl_Sub WHERE (Tbl_注文伝票.品番=Tbl_Sub.品番) AND (Tbl_Sub.注文日<=Tbl_注文伝票.注文日)) AS 累積契約数, (SELECT Sum(Tbl_出荷伝票.出荷数) FROM Tbl_出荷伝票 WHERE (Tbl_出荷伝票.品番=Tbl_注文伝票.品番) AND (Tbl_出荷伝票.出荷日>=Tbl_注文伝票.注文日)) AS 出荷数, IIf([累積契約数]<[出荷数],[契約数],IIf(([累積契約数]-[契約数])<[出荷数],[契約数]-[累積契約数]+[出荷数],0)) AS 納品数, [契約数]-[納品数] AS 残納品数 FROM Tbl_注文伝票; と作って 品番 注文番号 注文日 契約数 累積契約数 出荷数 納品数 残納品数 A 1 2007/05/01 100 100 150 100 0 A 2 2007/05/15 200 300 150 50 150 と、いう結果なんでしょうか? (不要な結果の部分が出てきますがね^^;頭の中で考えている場合、使ってる数値だと思いますが?) また、出荷先が同じとして考えてあるので出荷先が、またがる場合また作り直しでしょうね
一介のデザイナでプログラマではありませんので参考までに・・・。 <品番マスター> ID___品番 1____A 2____B <注文履歴> ID____受注日________注文番号__品番_ID__注文数 1_____2007/07/01__70701001__1___________100 2_____2007/07/02__70702001__2___________100 3_____2007/07/03__70703001__1___________100 <納品履歴> ID____納品日_________注文番号___品番_ID__納品数 1_____2007/07/04___70701001___1___________50 2_____2007/07/05___70701001___1 ___________25 3_____2007/07/05___70703001___1 ___________70 4_____2007/07/06___70702001___2 ___________80 さて、このような<注文履歴>と<納品履歴>を基に下の<クエリ1>を作成してみました。 <クエリ1> 受注日________注文番号_____品番___注文数__納品日_________納品数___納品残数 2007/07/01__70701001_____A____________100__2007/07/04_________50____________50 2007/07/03__70703001_____A____________100__2007/07/05_________70____________30 2007/07/01__70701001_____A____________100__2007/07/05_________25____________25 2007/07/02__70702001_____B____________100__2007/07/06_________80____________20 ですから、Access の場合は、かかるクエリを作成する能力次第ということになります。 >記録に残すのは入りと出、それがあれば残数は計算で求まります。 とは、こういうことかも知れません。 なお、<クエリ1>を[SQL ビュー]で表示すると、次のようです。 SELECT 注文履歴.受注日, 注文履歴.注文番号, 品番マスター.品番, 注文履歴.注文数, 納品履歴.納品日, 納品履歴.納品数, (DBSUM("注文数","注文履歴","注文番号=" & 注文履歴.注文番号)-DBSUM("納品数","納品履歴","注文番号=" & 注文履歴.注文番号 & " AND 納品日<=#" & 納品履歴.納品日 & "#")) AS 納品残数 FROM (注文履歴 LEFT JOIN 品番マスター ON 注文履歴.品番_ID=品番マスター.ID) LEFT JOIN 納品履歴 ON 注文履歴.注文番号=納品履歴.注文番号 ORDER BY 納品履歴.納品日; 大体、イメージがつかめたでしょうか?
お礼
早速の回答ありがとうございます。 拝見させていただきました。 多分、納品履歴は、注文番号に対しての処置を行っているのでは ないかと思います。残念ながら、注文番号に対しての、処置は、あくまで、注文番号の早い順+日付の早い順で、消していきます。その為、注文番号が2つ同時に流れる事はありません。(単一に、注文番号に対しての処置であれば、ここまで困らないのですが・・・。) 発送先は、基本的に、一社のみの為、注文番号は、先ほども記載したとおり、複数の通常の注文の納品数を足した数となっている為、必ず、納品をしたら、その、注文番号に対して。完納しなければ、次の、注文番号の、納品にいたりません。お手数をおかけしますが、宜しくお願いいたします。
- CHRONOS_0
- ベストアンサー率54% (457/838)
この方法だとどれだけ出荷したかの情報が残らないですね 記録に残すのは入りと出、それがあれば残数は計算で求まります 設計から見直さなきゃどうしようもないでしょうね
お礼
早速の回答ありがとうございます。上記の補足でも記載いたしたように生産管理(材料発注)為の、覚え書き・進捗度合いの確認?みたいな伝票となっております。その為、注文番号と納品数が、対になっていないのです。(生産管理者は、複数の注文を合算し、この、伝票用に、新たに注文番号を切り、納品数を加算して来るのです)個人的には、これに、携わる作業は、エクセルにて、毎日行っていて、あくまでも、生産管理者の言われるがままとなっていて、正直、無駄に近いと思っているのですが、会社自体がそれを、良と思っているので、どうしようもありません。その為、これに費やす時間を減らしたいと思い質問したしだいです。
補足
早速の回答ありがとうございます。これは、あくまでも、生産管理(材料発注)の確認の為の伝票となります。通常の、出荷自体の、伝票は別にあります。
お礼
早速の回答ありがとうございます。 ご指摘のとおり 品番A とし 注文番号 1 納品数が100 納品数ではなく、ここで書かれている契約数(注文数) となります。また、出荷先に関しては、本社納めとなる為 同一となります。NO.3・NO.4を、読み直しチャレンジしてみます。 ありがとうございます。