Microsoft Access 掲示板

異なるレコード間での集計・順番に計算する方法 / 8

9 コメント
views
4 フォロー
8

お世話になります。

以下のような感じになります。
ユーザが入力するのは 以下のフォーム
              D1   D2
X:2021:06:  10 10

上記データを
↓ 構成マスタと合わせ展開して 消費テーブルに追加

6/1 あいうA  10
6/1 あいうB  10

Excelライクに入力する範囲 を常に一定 にするため上記方法を考えております。

通報 ...
  • 9
    りんご 2021/05/21 (金) 01:12:59 48103@0e907 >> 8

     クロス集計テーブルとクロス集計入力フォームは、個人的には、NGです。
     クロス集計ありきで、ExcelライクなAccessを目指すと、横にフィールドを伸ばしたくなったり、縦横のイメージが抜けなくなったりしませんか?

    製品名子部品1子部品2子部品36/16/26/3
    製品XあいうAあいうBテープ101010

     縦横のAccessは、たぶん、複雑なSQLを都度都度要求されるので、まず完成しません。神アニメや神ゲームをExcelで再現するくらい大変でしょう。

    製品名子部品使用日
    製品XあいうA,あいうB,テープ,ネジ,…6/1,6/2,6/3,…

     これも、複雑なSQLが必要になるアンチパターンでしょう。

    製品名子部品使用日使用数在庫数
    製品XあいうA6/11030
    製品XあいうA6/21020
    製品XあいうA6/31010
    製品XあいうB6/41020

     ある共通点を持つものを、横に並べない、これがAccessの基本だと思います。

    このときA,Bの所要計画を立てると並列のためどちらからも
    引き算してしまいますが、 Aが在庫切れしたところからBを引くようにしたいです。

     こんなのはどうでしょう?
    ・製造計画フォーム
    製造日:6/1、製品名:製品X、製造数:10
    材料明細

    子部品No子部品予定使用数
    1あいう10
    2テープ5
    3ネジ15

    ロット明細(古いバージョンから使う事)

    子部品Noロット名使用数在庫数
    1あいうA30
    1あいうB20

    次のように、ユーザーが選んで打ち込みます。

    子部品Noロット名使用数在庫数
    1あいうA1030
    1あいうB20

    在庫数がなくなるかマイナスになると、表示されなくなったり、打ち込めなくなったりするのは、どうでしょう?

    子部品Noロット名使用数在庫数
    1あいうB20

    あとは、在庫数をどうやって処理するかの問題は、残りますが。

     クロス集計クエリは、Access完成後、しばらく運用してから、見やすさのために、リリーフ登板する感じになるのではないでしょうか。