前回までに、在庫管理に係る入庫処理の方法を紹介しました。
今回は、出庫処理の方法を見ていきましょう。基本的には、入庫処理と同様に作成していけば良いのですが、在庫情報を登録する際に、「マイナス」の処理をする必要がありますので、その点に注意をしていただければと思います。まずは、前回のおさらいとして以下の記事をご確認ください。
出庫データ登録画面の設定
出庫データを登録するためのオブジェクトを配置します。オブジェクトの設定については、入庫時に作成した内容とほぼ同じです。図1に示すように配置をしていきます。

なお、入庫フォームと識別するために、各オブジェクトの名称を決める必要があります。出庫数を入力するテキストボックスを「t_出庫数」、品目情報を入力するコンボボックスを「t_出庫品目」、担当者情報を入力するコンボボックスを「t_出庫担当者」という名称にします。また、出庫処理を開始するためのコマンドボタンを「cmd_出庫処理」という名称にします。
次に、ユーザーがコンボボックスで情報を選択、出庫数をテキストボックスに入力し、コマンドボタンをクリックした段階で、VBAによる処理が開始するようにします。
VBAソースコード 入力内容の確認
「cmd_出庫処理」コマンドボタンのクリックを、出庫処理の開始イベントとします。まず、「cmd_出庫処理」コマンドボタンを右クリックし、プロパティを開き「クリック時」の項目で「イベントプロシージャ」を設定します。この状態で「…」ボタンをクリックすると、VBA画面が起動します(図2参照)。

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

続いて、「出庫登録」コマンドボタンをクリックすると、処理が開始され、最終的に「処理を完了しました。」というメッセージボックスが表示されます。
この後に、「T_出庫テーブル」及び「T_在庫テーブル」を確認すると、先ほどフォーム上に入力したデータが反映されていると思います。
なお、前回に「T_在庫テーブル」に入庫情報を登録したため、今回のデータ登録は2レコード目になります。(前回はプラス、今回はマイナスの在庫数が登録されます。)これにより、ある時期の在庫数を集計処理をすることが可能になります。
まとめ
今回は、在庫管理をするデータベースの出庫情報登録に係るフォームの作成方法について、紹介をしました。また、ADOを用いた処理、If文を用いた入力データの妥当性確認について、紹介をしました。以上から、T_在庫テーブルでは入出庫の両データが登録されることになりますので、クエリ等を用いて、ある時期の在庫数を集計処理することができるようになります。この方法は次回以降に紹介したいと思います。
スポンサーリンク



コメント