10/08/2018

Access。入荷販売の履歴から在庫数を求めることができるクエリをつくりたい【Arrival】

Access。入荷販売の履歴から在庫数を求めることができるクエリをつくりたい

<在庫リスト>

入荷を管理しているテーブルと販売を管理しているテーブルを使って、
現在の在庫数がわかるクエリを作ってみましょう。

T入荷テーブルを確認します。

T販売テーブルを確認します。

この2つのテーブルを使って、在庫数がわかるようにしたいわけです。

Excelだとちょっと、面倒ですし大変ですが、
Accessのクエリで比較的簡単に算出することができます。

あと、商品コードのみで商品名がわからないので、
T商品マスターを用意しておきます。

そして、リレーションシップも商品コードフィールドを使って設定しておきます。

準備はここまで。いよいよクエリを作っていきます。

作成タブのクエリデザインをクリックして、
T入荷テーブルとT販売テーブルを追加します。

最初に外部結合の設定を行います。

なぜ行うのかというと、入荷したけど、
販売していない商品もリストアップするようにしないといけないためです。

では、商品コードフィールドを結合させて、
結合プロパティダイアログボックスを表示します。

2のT入荷の全レコードとT販売の同じ結合フィールドの
レコードだけを含めるにチェックしてOKボタンをクリックします。

外部結合の設定が終わりましたので、クエリのフィールドを設定していきます。

在庫数を求めるために、
入庫数と販売数のフィールドを別のフィールド名にして
合計させる必要があるので、入庫数を入荷合計、
販売数を販売合計というフィールド名で合計させます。

なお、集計行を表示するのは、
デザインタブの集計ボタンをクリックすることで、
表示することができます。

在庫数は、集計行を”演算”と選択することで求めることができます。
在庫数: [入荷合計]-[販売合計]
と設定してあります。

さて、実行してみましょう。

入荷合計と販売合計は、合算できていて、
在庫数も入荷合計から販売合計を減算できていますが、
商品コード6の在庫数が表示されていません。

これは、販売合計がない、つまり販売されていないので、
空白で表示されてしまっています。

そこで、販売合計を次のように修正します。

販売合計: Nz([販売数],0)

Nz関数を使うことで、Null値にならないようにして、
0(ゼロ)にすることができます。
それでは、再度実行してみましょう。

商品コード6もきちんと在庫数が算出することができました。

あとは、商品名がないと、わかりにくいので、
このクエリをQ在庫数と名前を付けて保存をして一度閉じて、
新たにクエリを作成していきます。

T商品マスターから商品名フィールドを加えてみましょう。

では、実行して確認してみましょう。

これで完成しましたね。

このように、入出庫のテーブルから在庫数を求めるクエリを作ることができます。