まずはデータベース接続と、レコードセットを取得する処理です。
今回は「蔵書一覧」テーブルを操作したいので、OpenRecordsetの引数は「蔵書一覧」です。
[vb]
‘ 変数の宣言
Dim db As DAO.Database
Dim rs As DAO.Recordset
‘ データベース接続
Set db = CurrentDb()
‘ レコードセット取得
Set rs = db.OpenRecordset("蔵書一覧", dbOpenDynaset)
[/vb]
テーブルオブジェクトを取得できたら、以下の手順でレコード追加の処理を実装します。
1. 新規レコードを追加(AddNew)
2. 各カラムに値を設定
3. レコードセット(テーブル)を更新
[vb]
‘ 新規レコードを追加
rs.AddNew
‘ 追加したレコードの各フィールドに値を設定
rs.Fields("タイトル") = Me.タイトル
rs.Fields("CATEGORY_ID") = Me.カテゴリ.Column(0)
rs.Fields("著者") = Me.著者
‘ レコードを更新
rs.Update
‘ レコードセットとデータベースを閉じる
rs.Close
db.Close
[/vb]
最後に、登録フォームの値を初期化する処理が以下です。
[vb]
Me!タイトル = Null
Me!カテゴリ = "小説"
Me!著者 = Null
[/vb]
これらと練習3-1を組み合わせた完成プログラムは以下になります。
[vb]
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
Dim title As String
Dim category_name As String
Dim author As String
Dim msg As String
title = Me.タイトル
category_name = Me.カテゴリ.Column(1)
author = Me.著者
msg = "■書籍登録を行います。" & vbCrLf & _
"タイトル:" & title & vbCrLf & _
"カテゴリ:" & category_name & vbCrLf & _
"著者:" & author
If MsgBox(msg, vbOKCancel) = vbOK Then
‘ テーブルにレコードを追加する
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("蔵書一覧", dbOpenDynaset)
‘ 新規レコードを追加
rs.AddNew
‘ 追加したレコードの各フィールドに値を設定
rs.Fields("タイトル") = Me.タイトル
rs.Fields("CATEGORY_ID") = Me.カテゴリ.Column(0)
rs.Fields("著者") = Me.著者
‘ レコードを更新
rs.Update
‘ レコードセットとデータベースを閉じる
rs.Close
db.Close
Me!タイトル = Null
Me!カテゴリ = Me!カテゴリ.ItemData(0)
Me!著者 = Null
MsgBox "登録が完了しました"
DoCmd.Close acForm, "F_書籍検索"
DoCmd.OpenForm "F_書籍検索"
End If
End Sub
[/vb]