トップ > スキル : アプリケーション > VBA for Access > 実践編(在庫管理データベースの作成2)

VBA_Access

在庫管理データベースの作成

「入庫処理フォーム」の作成

入庫処理フォームは、出庫処理フォームとほぼ同じです。次の操作を行って入庫処理フォームを作成します。


①  出庫処理フォームを選択して、コピー、そして貼り付けを行います。名前を「入庫処理フォーム」にします。

②  入庫処理フォームをデザインビューで開き、背景色を変更します。色は任意です。

③  [OK]ボタンのイベントプロシージャを書き換えます。[OK]ボタンをクリックして、[プロパティシート]を開きます。[イベント]タブを選択し、[クリック時]が「イベントプロシージャ」となっていることを確認します。

④  [クリック時]プロパティのビルドボタンをクリックして、VBE画面に切り替え、下の図のように書き換えます。(引き算を足し算にするだけです)

[フォーム]内のタイトルラベル(見出し)と[フォーム]プロパティシートの[標題]プロパティを「入庫処理フォーム」に変更します。

これで、入庫処理フォームは完成しました。フォームは上書き保存をして閉じておきます。

在庫照会フォームから各フォームを呼び出す

必要なフォームができたら、在庫照会フォームから入庫用と出庫用のフォームを呼び出すためのプロシージャを作成します。
次の操作を行って、各ボタンのイベントプロシージャを作成します。


①  「在庫照会フォーム」をデザインビューで開きます。

②  「出庫」ボタンを選択して、プロパティシートを表示します。そして、[イベント]タブの[クリック時]プロパティを選択してビルドボタンをクリックします。

③  [コードビルダ]を選択して、VBE画面を表示します。次のコードを入力します。

④  同様な操作を行って、「入庫」ボタンには、次のコードを入力します。

以上で、すべて完成しました。次に動作を確認します。上書き保存をして、フォームビューに切り替えます。

OpenFormメソッド

OpenFormメソッドは、VBAからフォームを開くアクションを実行するメソッドです。

Docmd.OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs

  • FormName/フォーム名(必須)
       開くフォーム名を指定します
  • View/ビュー(省略可能)
       ビューを①の定数で指定します。省略時は、プリンタへ印刷されます。
  • FilterName/フィルタ名(省略可能)
       レコードソースに使うクエリを指定します。
  • WhereCondition/レコード抽出条件(省略可能)
       テーブルやクエリと連結しているときのレコード抽出条件を指定します。
  • DataMode/追加・編集モード(省略可能)
       データの入力モードを②の定数で指定します。
  • WindowMode/ウィンドウの状態(省略可能)
       ウィンドウモードを③の定数で指定します。
  • OpenArgs/レポートへの引き渡しデータ(省略可能)
       レポートのOpenArgsプロパティへ設定する内容を指定します。
View(第2引数)に指定する定数
acDesign デザインビューで開きます。
acFormDS データシートビューで開きます。
acFormPivotChart ピボットチャートビューで開きます。
acFormPivotTable ピボットテーブルビューで開きます。
acNormal フォームビューで開きます。(省略時と同じ)
acPreview 印刷プレビューで開きます。
DataMode(第5引数)に指定する定数
acFormAdd 新しいレコードを追加できます。ただし、既存のレコードの編集はできません。
acFormEdit レコードの編集・追加が自由に行えます。
acFormPropertySettings フォームのプロパティで設定されている通りにレコード編集・追加が行えます(規定値)。
acFormReadOnly レコードの参照だけが行えます。
WindowMode(第6引数)に指定する定数
acDialog フォームの「作業ウィンドウ固定(Modal)」プロパティと「ポップアップ(PopUp)」プロパティが「はい(Yes)」の状態で開きます。
acIcon フォームが最小化され、Windows タスクバーに収まります。
acHidden 非表示になります。
acWindowNormal フォームのプロパティで設定されているモードで開きます(規定値)。
【Where句の書き方手順】
① フォーム名、コントロール名(テキストボックス名)を確認する。
開くフォーム:出庫処理フォーム
開くフォームの中の、キーとなるフィールド:商品番号
② 基本部分の式を書いてみる。
商品番号=Me!商品番号
③ 比較する商品番号はテキスト型なので、文字列として扱うため、右辺をダブルクォーテーション
で囲む。
商品番号=″Me!商品番号″
④ 式全体を文字列として扱うので、ダブルクォーテーションで囲む。
″商品番号=″Me!商品番号″″
(これは、開いた先の商品番号=このフォームの商品番号を意味する式)
⑤ ダブルクォーテーションを二重につけることができないので、内側のダブルクォーテーションは
シングルクォーテーションに変更する。
″商品番号=′Me!商品番号′
⑥ 右辺の「このフォームの商品番号」という書き方の部分だけダブルクォーテーションの外に出す。
″商品番号=′  Me!商品番号   ′″
⑦ それぞれのダブルクォーテーションを閉じる。
″商品番号=′″  Me!商品番号   ″′
⑧ 3つに分かれた式を&で結ぶ。
″商品番号=′″ & Me!商品番号 & ″′

動作の確認

在庫照会フォームをフォームビューで開き、商品名「コーヒー」の数量が「193」であることを確認します。


①  「出庫」ボタンをクリックします。

②  「出庫処理フォーム」が開きます。
「数量」テキストボックスに「20」と入力して、[OK]ボタンをクリックします。

③  メッセージが表示されます。
[はい]ボタンをクリックします。

④  「コーヒー」の在庫数が「173」となり、「20」減算されたことが確認できます。

⑤  次に商品名「ココア」の[入庫]ボタンをクリックします。「入庫処理フォーム」が表示されるので、「数量」テキストボックスに「50」と入力して、[OK]ボタンをクリックします。

⑥  メッセージが表示されます。
[はい]ボタンをクリックします。

⑦  「ココア」の在庫数が「147」となり、「50」加算されたことが確認できます。

あとは、それぞれ、キャンセルボタンが押された時、確認画面で[いいえ]ボタンをクリックしたときの動作も確認しておきます。

以上で在庫管理DBは完成です。まだ、いろいろな箇所で修正が必要な場面も出ると思いますが、通常の業務であれば、これである程度は活用できます。
さらに、さまざまな項目名や科目が必要であれば、それらをテーブル内に追加します。今回のテーブルは1つですので、作りやすい例です。商品のメーカー名も入れたいとなると、メーカーのマスターテーブルを追加することになります。しかし、それはあくまでも参照元となるテーブルですから、現フォームには特に影響はありません。

VBAで自動化できるように作り上げることで、誰でも扱え、操作性が優れたデータベースになります。ただ、Accessを勉強して、すぐにVBAを勉強することはあまり好ましくありません。まずは、Accessでできることは、Access自体で作成し、簡単な自動化であればマクロで作ります。
マクロを使っても実現できない自動化をVBAで作り上げるように順を追って、使い分けることが大事です。