クロス集計テーブルとクロス集計入力フォームは、個人的には、NGです。
クロス集計ありきで、ExcelライクなAccessを目指すと、横にフィールドを伸ばしたくなったり、縦横のイメージが抜けなくなったりしませんか?
| 製品名 | 子部品1 | 子部品2 | 子部品3 | … | 6/1 | 6/2 | 6/3 | … |
|---|---|---|---|---|---|---|---|---|
| 製品X | あいうA | あいうB | テープ | … | 10 | 10 | 10 | … |
縦横のAccessは、たぶん、複雑なSQLを都度都度要求されるので、まず完成しません。神アニメや神ゲームをExcelで再現するくらい大変でしょう。
| 製品名 | 子部品 | 使用日 |
|---|---|---|
| 製品X | あいうA,あいうB,テープ,ネジ,… | 6/1,6/2,6/3,… |
これも、複雑なSQLが必要になるアンチパターンでしょう。
| 製品名 | 子部品 | 使用日 | 使用数 | 在庫数 |
|---|---|---|---|---|
| 製品X | あいうA | 6/1 | 10 | 30 |
| 製品X | あいうA | 6/2 | 10 | 20 |
| 製品X | あいうA | 6/3 | 10 | 10 |
| 製品X | あいうB | 6/4 | 10 | 20 |
ある共通点を持つものを、横に並べない、これがAccessの基本だと思います。
このときA,Bの所要計画を立てると並列のためどちらからも
引き算してしまいますが、 Aが在庫切れしたところからBを引くようにしたいです。
こんなのはどうでしょう?
・製造計画フォーム
製造日:6/1、製品名:製品X、製造数:10
材料明細
| 子部品No | 子部品 | 予定使用数 |
|---|---|---|
| 1 | あいう | 10 |
| 2 | テープ | 5 |
| 3 | ネジ | 15 |
ロット明細(古いバージョンから使う事)
| 子部品No | ロット名 | 使用数 | 在庫数 |
|---|---|---|---|
| 1 | あいうA | 30 | |
| 1 | あいうB | 20 |
次のように、ユーザーが選んで打ち込みます。
| 子部品No | ロット名 | 使用数 | 在庫数 |
|---|---|---|---|
| 1 | あいうA | 10 | 30 |
| 1 | あいうB | 20 |
在庫数がなくなるかマイナスになると、表示されなくなったり、打ち込めなくなったりするのは、どうでしょう?
| 子部品No | ロット名 | 使用数 | 在庫数 |
|---|---|---|---|
| 1 | あいうB | 20 |
あとは、在庫数をどうやって処理するかの問題は、残りますが。
クロス集計クエリは、Access完成後、しばらく運用してから、見やすさのために、リリーフ登板する感じになるのではないでしょうか。
通報 ...