本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。
Accessの在庫管理テーブルでSQL実行を行うサンプルシナリオ(以降、本サンプルシナリオ)について説明します。
本サンプルシナリオは、以下の処理を行います。
本サンプルシナリオでは、以下のWinActorモジュールを使用します。
本ドキュメントは、以下の技術レベルのユーザを対象としています。
本サンプルシナリオは以下の環境で動作確認しています。
本サンプルシナリオの実施方法は以下の通りです。
テーブルは以下のような形式で作成されています。
在庫テーブル
フィールド名:データ型
本サンプルシナリオではデータが10件用意されています。
在庫テーブルに登録や更新を行うための入庫データと出庫データはAccessにインポートしてあります。
データを変更する場合はExcelファイルなどからインポートを行ってください。
WinActorを起動し、本サンプルシナリオを読み込みます。
本サンプルシナリオを実行するために必要な値を、変数一覧で設定・変更します。
以下の変数を必要に応じて設定・変更してください。
本サンプルシナリオを実行開始します。
InsertとUpdateの結果を出力したExcelファイルで確認してください。
在庫テーブルのデータが条件に従って削除されていることを確認してください。
本サンプルシナリオでは、変数指定が不十分であった場合、エラーメッセージが出力されます。
詳細については、エラーメッセージ一覧を参照してください。
本サンプルシナリオで使用している実装テクニックについて説明します。
入庫データから在庫テーブルへ在庫を登録しています。
「INSERT INTO 在庫テーブル(商品ID,商品名,在庫数,当月入庫数) SELECT 商品ID,商品名,在庫数,在庫数 FROM 入庫データ」
上記のSQLで複数のデータを一括して在庫テーブルに登録できます。
本サンプルシナリオはVALUES句で直接値を指定するのではなく「入庫データ」テーブルを読み込んでSELECTで値を取得することでVALUES句の代わりに値をセットしています。
VALUES句を指定することでデータを1件ずつ登録することもできます。
(例)
INSERT INTO 在庫テーブル (商品ID,商品名,在庫数,当月入庫数) VALUES (4900000000001, '商品データ001', 10, 10)
INSERT INTO 在庫テーブル (商品ID,商品名,在庫数,当月入庫数) VALUES (4900000000002, '商品データ002', 20, 20)
出庫データから在庫テーブルへ出庫数を更新しています。
「UPDATE 在庫テーブル AS A INNER JOIN 出庫データ AS B ON A.商品ID = B.商品ID SET 在庫数 = 在庫数 - 出庫数, 当月出庫数 = 当月出庫数 + 出庫数」
上記のSQLの通り、本サンプルシナリオでは在庫テーブルと出庫データの同じ主キーで結合することで、複数行のデータを一括更新しています。
■更新内容
①在庫数(在庫テーブル) :在庫数(在庫テーブル) - 出庫数(出庫データ)
②当月出庫数(在庫テーブル):当月出庫数(在庫テーブル) + 出庫数(出庫データ)
■SQL説明
①UPDATE 在庫テーブル AS A :「A」は在庫テーブルの別名です。
②INNER JOIN 出庫データ AS B :「B」は出庫データの別名です。
③ON A.商品ID = B.商品ID :在庫テーブル(A)と出庫データ(B)で同じキーを持った値の行を結合します。
④SET 在庫数 = 在庫数 - 出庫数, :在庫テーブルの在庫数から出庫データの出庫数を引いた値を在庫テーブルの在庫数にセットします。
⑤当月出庫数 = 当月出庫数 + 出庫数 :在庫テーブルの当月出庫数から出庫データの出庫数を加えた値を在庫テーブルの当月出庫数にセットします。
■テーブル結合イメージ
「INNER JOIN」は在庫テーブルと出庫データを結合する命令で、在庫テーブルの行に出庫データの同じ商品IDを持つ行を結合し、
在庫テーブルと出庫データのどちらにも値が存在する行のみを対象とする命令です。
SETでは1行内での値を使って計算された値を在庫テーブルのフィールドにセットします。
(例)
在庫テーブルに出庫データを連結させるイメージ
在庫テーブル 出庫データ
商品ID, 商品名, 在庫数, 当月入庫数, 当月出庫数, 更新日時 + 出庫日, 商品ID, 商品名, 出庫数
〇4900000000001, 商品データ001, 10, 10, 0, 2021/03/18 15:00 + 2021年03月23日, 4900000000001, 商品データ001, 5
〇4900000000002, 商品データ002, 20, 20, 0, 2021/03/18 15:00 + 2021年03月23日, 4900000000001, 商品データ002, 10
×4900000000003, 商品データ003, 30, 30, 0, 2021/03/18 15:00 + 該当データなし
〇4900000000004, 商品データ004, 40, 40, 0, 2021/03/18 15:00 + 2021年03月23日, 4900000000004, 商品データ004, 20
上記の例では「〇」が先頭についているデータが結合されたデータで、更新対象のデータとなり、この行の値で加減算を行い該当フィールドに更新します。
■補足
本サンプルシナリオではINNER JOINで直接更新値を記述するのではなく、「出庫データ」テーブルの行を結合して1行データを作成し、その値を使って更新しています。
SETに更新値を直接指定することでデータを1件ずつ更新することもできます。
(例)
UPDATE 在庫テーブル SET 在庫数 = 5, 当月出庫数 = 5 WHERE 商品ID = 4900000000001
UPDATE 在庫テーブル SET 在庫数 = 10, 当月出庫数 =105 WHERE 商品ID = 4900000000002
在庫テーブルからExcelファイルを出力します。
「SELECT 商品ID, 商品名, 在庫数, 当月入庫数, 当月出庫数, 更新日時 FROM 在庫テーブル」
上記のSQLで抽出したデータをExcelファイルに出力し、書式設定と列幅の調整をしています。
商品IDの13桁の数値は、標準書式では13桁数値が正しく表示されないため、書式を変更しています。
SELECTの一例は以下の通りです。
(例)
SELECT * FROM 在庫テーブル WHERE 在庫数 <= 5 (在庫数が5以下)
SELECT 納品日, SUM(在庫数) AS 在庫数合計 FROM 入庫データ GROUP BY 納品日 (同じ納品日の在庫合計)
在庫テーブルのデータを、以下の選択した条件に従い削除します。
DELETEの一例は以下の通りです。
(例)
DELETE * FROM 在庫テーブル WHERE 在庫数 = 0 AND 当月入庫数 > 0 AND 当月出庫数 > 0
(在庫数が「0」 且つ 当月入庫数が「0」より大きく 且つ 当月出庫数が「0」より大きい行を削除)
版数 | 日付 | 修正内容 | ||||||
---|---|---|---|---|---|---|---|---|
|
|
|
||||||
|
|
|
本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。
ExcelファイルのデータをAccessファイルに取り込むサンプルシナリオとなります。
詳しくはこちらExcelファイルのデータを使用してAccessファイルのデータを更新するサンプルシナリオとなります。
詳しくはこちら在庫テーブルからデータを取得しExcelに出力するサンプルシナリオとなります。
詳しくはこちら在庫テーブルから全件または条件に従ってデータを削除します。
詳しくはこちら