Accessによる在庫管理 その4 フォームの設計(出庫処理)

VBA

前回までに、在庫管理に係る入庫処理の方法を紹介しました。
今回は、出庫処理の方法を見ていきましょう。基本的には、入庫処理と同様に作成していけば良いのですが、在庫情報を登録する際に、「マイナス」の処理をする必要がありますので、その点に注意をしていただければと思います。まずは、前回のおさらいとして以下の記事をご確認ください。

スポンサーリンク

出庫データ登録画面の設定

出庫データを登録するためのオブジェクトを配置します。オブジェクトの設定については、入庫時に作成した内容とほぼ同じです。図1に示すように配置をしていきます。

図1 出庫データ登録向けフォームの配置

なお、入庫フォームと識別するために、各オブジェクトの名称を決める必要があります。出庫数を入力するテキストボックスを「t_出庫数」、品目情報を入力するコンボボックスを「t_出庫品目」、担当者情報を入力するコンボボックスを「t_出庫担当者」という名称にします。また、出庫処理を開始するためのコマンドボタンを「cmd_出庫処理」という名称にします。

次に、ユーザーがコンボボックスで情報を選択、出庫数をテキストボックスに入力し、コマンドボタンをクリックした段階で、VBAによる処理が開始するようにします。

VBAソースコード 入力内容の確認

「cmd_出庫処理」コマンドボタンのクリックを、出庫処理の開始イベントとします。まず、「cmd_出庫処理」コマンドボタンを右クリックし、プロパティを開き「クリック時」の項目で「イベントプロシージャ」を設定します。この状態で「…」ボタンをクリックすると、VBA画面が起動します(図2参照)。

図2 出庫処理に係るVBA画面

そして、ソースコードは入庫情報を登録する際に記載した内容とほぼ同じです。注意点としては、在庫情報を登録する際に、「在庫数」フィールドにはマイナスの値を登録するという点です。入力データのチェックルーチンを含めて、一気通貫で追加するソースコードを以下に示します。

 Private Sub cmd_出庫処理_Click()

'以下のソースコードを追記する。
'品目情報が入力されていないと処理中止
If Me.t_出庫品目 = "" Or IsNull(Me.t_出庫品目) Then    'Nullか未入力かどちらかで処理中止
    MsgBox "品目情報が選択されていません。"
    Exit Sub
'出庫数が入力されていないと処理中止
ElseIf IsNumeric(Me.t_出庫数) = False Then
    MsgBox "出庫数が正しく入力されていません。(半角数字で入力)"
    Exit Sub
'担当者情報が入力されていないと処理中止
ElseIf Me.t_出庫担当者 = "" Or IsNull(Me.t_出庫担当者) Then
    MsgBox "担当者情報が選択されていません。"
    Exit Sub
End If

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

'カレントデータベースへの接続
Set cn = CurrentProject.Connection

'T_出庫テーブルを開く
rs.Open "T_出庫テーブル", cn, adOpenKeyset, adLockOptimistic

'レコードセットの登録(フィールド指定は、rs!~と記載する。)
rs.AddNew
rs!出庫数 = Me.t_出庫数
rs!出庫年月日 = Now()
rs!品名 = Me.t_出庫品目
rs!担当者 = Me.t_出庫担当者

'Updateで情報登録が完了する。
rs.Update

'テーブルを閉じる。
rs.Close

'T_在庫テーブルを開く
rs.Open "T_在庫テーブル", cn, adOpenKeyset, adLockOptimistic

'レコードセットの登録(フィールド指定は、rs!~と記載する。)
rs.AddNew
rs!在庫数 = -Me.t_出庫数    '【ポイント!!】出庫は在庫に対してマイナスの処理。
rs!在庫年月日 = Format(Now(), "yyyy/mm/dd")  '時間情報は登録しない。 
rs!品名 = Me.t_出庫品目

'Updateで情報登録が完了する。
rs.Update

'テーブルを閉じる。
rs.Close

'データベース接続を閉じる。
cn.Close

'ガーベージコレクション
Set rs = Nothing
Set cn = Nothing

MsgBox "処理を完了しました。"

End Sub

出庫情報の登録

これまでに作成したフォームを用いて、「T_出庫テーブル」及び、「T_在庫テーブル」に情報を登録してみましょう。まずは、図3に示すように、フォーム上でデータを入力します。

図3 出庫情報の登録

続いて、「出庫登録」コマンドボタンをクリックすると、処理が開始され、最終的に「処理を完了しました。」というメッセージボックスが表示されます。
この後に、「T_出庫テーブル」及び「T_在庫テーブル」を確認すると、先ほどフォーム上に入力したデータが反映されていると思います。

なお、前回に「T_在庫テーブル」に入庫情報を登録したため、今回のデータ登録は2レコード目になります。(前回はプラス、今回はマイナスの在庫数が登録されます。)これにより、ある時期の在庫数を集計処理をすることが可能になります。

まとめ

今回は、在庫管理をするデータベースの出庫情報登録に係るフォームの作成方法について、紹介をしました。また、ADOを用いた処理、If文を用いた入力データの妥当性確認について、紹介をしました。以上から、T_在庫テーブルでは入出庫の両データが登録されることになりますので、クエリ等を用いて、ある時期の在庫数を集計処理することができるようになります。この方法は次回以降に紹介したいと思います。

スポンサーリンク

コメント

タイトルとURLをコピーしました