前回までに、在庫管理に係る入庫処理の方法を紹介しました。
今回は、出庫処理の方法を見ていきましょう。基本的には、入庫処理と同様に作成していけば良いのですが、在庫情報を登録する際に、「マイナス」の処理をする必要がありますので、その点に注意をしていただければと思います。まずは、前回のおさらいとして以下の記事をご確認ください。
出庫データ登録画面の設定
出庫データを登録するためのオブジェクトを配置します。オブジェクトの設定については、入庫時に作成した内容とほぼ同じです。図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_在庫テーブルでは入出庫の両データが登録されることになりますので、クエリ等を用いて、ある時期の在庫数を集計処理することができるようになります。この方法は次回以降に紹介したいと思います。
スポンサーリンク
コメント