WinActor

2022.03.22
サンプルシナリオ Access関連 Excel関連
Accessの在庫管理テーブルでUpdateを行うサンプルシナリオ

Excelファイルのデータを使用してAccessファイルのデータを更新するサンプルシナリオとなります。

SQLを作成せずに、Accessファイルのテーブルのデータを更新することができます。

本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。

サンプルシナリオ概要

はじめに

Accessの在庫管理テーブルでUpdateを行うサンプルシナリオ(以降、本サンプルシナリオ)について説明します。

本サンプルシナリオの概要

本サンプルシナリオは、以下の処理を行います。

  • Excelファイルの最終行を取得します。
  • 以下の処理を、Excelファイルの行数分実行します。
    • Excelファイルから出庫データを1行分読み込み、変数に格納します。
    • Excelファイルから取得した商品IDをもとに、Accessファイルの在庫テーブルから在庫数と当月在庫数を取得します。
      商品IDが存在しない場合、シナリオを終了します。(該当の商品IDがAccessファイル側に必須)
    • 出庫数から在庫数と当月在庫数を計算し、Accessファイルの在庫テーブルを更新します。
  • 使用したAccessとExcelファイルを閉じます。

使用するWinActorモジュール

本サンプルシナリオでは、以下のWinActorモジュールを使用します。

  • ノード/ユーザ/待機ボックス
  • ノード/変数/変数値設定
  • ノード/変数/四則演算
  • ノード/変数/カウントアップ
  • 01_WinActor制御/02_シナリオ制御/シナリオ停止.ums6
  • 07_文字列操作/02_切り出し・分割/文字列分割.ums6
  • 07_文字列操作/03_連結/文字列の連結(3つ).ums6
  • 18_Excel関連/01_ファイル操作/Excel操作(保存なしで閉じる).ums6
  • 18_Excel関連/03_行列操作/Excel操作(最終行取得 その1).ums6
  • 18_Excel関連/03_行列操作/Excel操作(行の読み取り).ums6
  • プチライブラリ/Access操作(ファイルを保存なしで閉じる)
  • プチライブラリ/Access操作(単一行Update)
  • プチライブラリ/Access操作(単一行Select)
    (プチライブラリはこちらからダウンロードできます)

    本サンプルシナリオの想定レベル

    本ドキュメントは、以下の技術レベルのユーザを対象としています。

    • Accessでテーブルを作成したことがある。

    動作確認環境

    本サンプルシナリオは以下の環境で動作確認しています。

    • Windows 10、WinActor 6.3.2、Microsoft Access 365、Microsoft Excel 365
    • Windows 10、WinActor 7.3.1、Microsoft Access 365、Microsoft Excel 365

    本サンプルシナリオの前提条件

    • 本サンプルシナリオは在庫テーブルに登録されていない商品IDは更新できません。
      在庫テーブルに登録されていない商品IDがExcelファイルに存在した場合、シナリオを終了させています。
    • 本サンプルシナリオはマイナス在庫を許容します。

    本サンプルシナリオの使い方

    本サンプルシナリオの実施方法は以下の通りです。

    Step1.更新データ準備

    在庫テーブルに更新するための出庫データをExcelで作成します。
    本サンプルシナリオでは以下の在庫テーブルを出庫データで更新します。

    在庫テーブル
    フィールド名:データ型

    • 商品ID:数値[十進型]13桁 (主キー)
    • 商品名:短いテキスト(255文字)
    • 在庫数:数値型(既定値:0)
    • 当月入庫数:数値型(既定値:0)
    • 当月出庫数:数値型(既定値:0)
    • 更新日時:日付/時刻型(既定値:Now())

    本サンプルシナリオの「在庫テーブル用データ.xlsx」ではデータが7件用意されています。

    Step2.更新データ配置

    作成した更新データを本サンプルシナリオのあるフォルダに配置します。

    Step3.WinActorで本サンプルシナリオを読み込み

    WinActorを起動し、本サンプルシナリオを読み込みます。

    Step4.動作に必要な変数の設定・変更

    本サンプルシナリオを実行するために必要な値を、変数一覧で設定・変更します。
    以下の変数を必要に応じて設定・変更してください。

    • 在庫ファイルパス
      • UpdateするAccessファイルを絶対パスまたは相対パスで指定してください。
        (例) 在庫管理ファイル.accdb

    • テーブル名
      • Update対象のテーブル名を指定してください。
        (例) 在庫テーブル

    • 取得対象列名
      • Seletctで値を取得する列名をカンマ区切りで指定してください。
        (例) 商品ID,在庫数,当月出庫数

    • 更新対象列名
      • Update対象の列名をカンマ区切りで指定してください。
        (例) 在庫数,当月出庫数

    • 更新対象行の主キー
      • Update対象の在庫テーブルの主キーをカンマ区切りで指定してください。
        (例) 商品ID

    • Update用データファイルパス
      • Update用のExcelファイルを絶対パスまたは相対パスで指定してください。
        (例) 在庫テーブル用データ.xlsx

    18401_input01.png
    変数一覧画面

    Step5.WinActorで本サンプルシナリオを実行

    本サンプルシナリオを実行開始します。
    本サンプルシナリオで用意した「在庫テーブル用データ.xlsx」にあるすべてのデータで、在庫テーブルを更新するまでサンプルシナリオはループします。

    Step6.サンプルシナリオ実行終了後の確認

    在庫テーブルが、「在庫テーブル用データ.xlsx」のすべてのデータで更新されていることを確認してください。

    トラブルシューティング

    本サンプルシナリオでは、変数指定が不十分であった場合、エラーメッセージが出力されます。
    詳細については、エラーメッセージ一覧を参照してください。

    サンプルシナリオ解説

    本サンプルシナリオで使用している実装テクニックについて解説します。

    1.入力ファイル(出庫データ)の形式

    在庫テーブルを更新するための「在庫テーブル用データ.xlsx」の形式は以下の通りです。

    1行目…列タイトル(セルA1から順番に[出庫日,商品ID,商品名,出庫数])
    2行目以降…列タイトルに合わせて入力します。
     出庫日:YYYY年MM月DD日
     商品ID:13桁の数値(書式はユーザ定義で「0000000000000」に指定してあります。)
     商品名:255文字までの文字列
     出庫数:1以上の整数値

    商品IDが空白になった時点で本サンプルシナリオは繰り返し処理を終了します。

    2.在庫テーブルのUpdate処理

    「在庫テーブル用データ.xlsx」から[,商品ID,出庫数]のデータを取得して1行ずつ更新します。

    「在庫テーブル用データ.xlsx」の商品IDと出庫数を使用して在庫テーブルの更新処理を行います。
    更新は在庫テーブルの該当商品IDを「Access操作(単一行Select)」ライブラリで取得し、在庫テーブルの在庫数を減算、当月出庫数を加算します。

    在庫数(在庫テーブル)=在庫数(在庫テーブル) - 出庫数(「在庫テーブル用データ.xlsx)
    当月出庫数(在庫テーブル) = 当月出庫数(在庫テーブル) + 出庫数(「在庫テーブル用データ.xlsx)

    18401_input02.png
    在庫テーブルの更新処理

    3.在庫テーブルのSelect処理

    在庫テーブルの読み込みには「Access操作(単一行Select)」ライブラリを使用します。

    在庫テーブル用データ.xlsxから[,商品ID,出庫数]を読み込み、該当する商品IDを「Access操作(単一行Select)」ライブラリを使用して検索します。
    検索処理は、在庫テーブルを「Access操作(単一行Select)」ライブラリにより1件目から検索します。
    該当する商品IDが検索できた場合は後続の検索処理を止め、更新処理を行います。

    検索処理で該当データが取得できなかった場合は、以下のようなメッセージが表示されます。

    (例)
    該当の商品IDがありませんでした。
    本サンプルシナリオでは、Excelファイルで取得した商品IDが、Accessファイルに登録必須です。

    商品ID:4900000000005

    上記のエラー発生時は、Accessファイルに対して該当の商品IDを追加する必要があります。
    本サンプルシナリオは、在庫テーブルに該当商品IDがある前提で作成されています。(在庫がある場合は出庫できる前提)

    18401_input03.png
    在庫テーブルから取得処理

    変更履歴

    版数 日付 修正内容
    版数
    1.0版
    日付
    2022/3/22
    修正内容
    初版
    版数
    1.1版
    日付
    2024/1/17
    修正内容
    ・注意事項を削除
    ・ファイル名を「SS2203_18401_AccessOperation_UpdateInventory_1.0.1.zip」に変更

    本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。

    "Access関連"に関連するその他のサンプルシナリオ

    サンプルシナリオ一覧へ戻る
    当サイトでは、お客さまに最適なユーザー体験をご提供するためにCookieを使用しています。当サイトをご利用いただくことにより、お客さまがCookieの使用に同意されたものとみなします。詳細は、「プライバシーポリシー」をご確認ください。