データベース作成

Access VBA データベース作成9 データの更新 編集フォームの作成2

データベース作成9 編集フォームの作成2

実践データベース作成の第9回目は編集フォームの作成Part2です。
前回は「検索フォーム」にコンボボックス、テキストボックスを追加し、プログラムを少し追加した「編集フォーム」を作成しました。
今回はテーブル内のデータを編集するプログラムを作成します。
・未入力データのチェック
・選択されているデータを検索
・テーブル内データの編集・更新
上記のような流れになります。

では、実際にVBAをどのように組み込んでいくのか説明します。

コマンドボタン(編集)のクリックイベント

コマンドボタンのイベントは「クリック時」になります。

sakusei22 sakusei23

コマンドボタンの「クリック時」には以下のプログラムを実行します。
1.各テキストボックス、コンボボックスが未入力(Null値)ではないか確認
2.「Find」を使用して編集する社員データを検索
2.「T_社員マスタ2013」を開き、レコードを編集・更新
実際のプログラムは以下のようになります。

プログラム例

Private Sub 編集コマンド_Click()

‘未入力の確認

If IsNull(Me.詳細名前) = True Then
MsgBox “名前が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細名前.SetFocus
Exit Sub
End If

If IsNull(Me.詳細性別コード) = True Then
MsgBox “性別が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細性別コード.SetFocus
Exit Sub
End If

If IsNull(Me.詳細所属部署コード) = True Then
MsgBox “所属部署が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細所属部署コード.SetFocus
Exit Sub
End If

If IsNull(Me.詳細入社日) = True Then
MsgBox “入社日が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細入社日.SetFocus
Exit Sub
End If
‘編集処理

If MsgBox(“編集を行います。よろしいですか?”, vbQuestion + vbYesNo, “編集の確認”) = vbYes Then

Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset

Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset

RS.Open “T_社員マスタ2013”, CN, adOpenStatic, adLockOptimistic

RS.Find “社員コード= ‘” & Me.詳細社員コード & “‘”

RS!名前 = Me.詳細名前
RS!性別コード = Me.詳細性別コード
RS!所属部署コード = Me.詳細所属部署コード
RS!入社年月日 = Me.詳細入社日
RS!更新日 = Date

RS.Update

MsgBox “編集が完了しました”, vbInformation, “編集完了”

RS.Close: Set RS = Nothing
CN.Close: Set CN = Nothing

End If

End Sub

プログラムの説明

1.未入力エラー処理
各テキストボックス、コンボボックスが未入力(Null値)の場合、警告メッセージを表示し、プログラムをその時点で終了させます。
未入力エラー処理の詳細はこちらを参照して下さい。

sakusei25

2.編集処理
(1)Yes/No型のメッセージボックスを表示し、Yesが選択された場合のみ編集処理を実行します。

sakusei26

(2)ADOを使用して「T_社員マスタ2013」を開きます。
(3)【Find】を使用して編集したい社員コードを条件にデータを検索します。
(4)データの更新を行います。
更新日フィールドには「今日の日付」(Date)を入力します。
実際には編集していないデータも同じ値を入力するプログラムになります。
(5)編集・更新が完了したメッセージを表示します。

いかがでしょうか?
これでコマンドボタンのクリック時イベントは終了です。
また、編集フォームの作成もこれにて完了になります。

こちらの記事もおすすめ!