ms accessでテーブルとそこに格納するフィールドを定義して、
そのレコードを登録するためのフォームを作成したとき、
そのフォームにはテーブルの列の値を入力するテキストボックスと、
ボタン1 ボタン2があって、
ボタン1押下で
DoCmd.GoToRecord , , acNewRec
が実行され、
ボタン2押下で
DoCmd.Saveが実行されるとします。
フォームに必要な項目を入力し、
ボタン2で保存しようとするとき、
vbaのコードのほうで、
テーブルにレコードがない場合は,まず、
DoCmd.GoToRecord , , acNewRec
を実行する、
そのあと、本来の保存の処理を行う、
という処理にしたいときは、
どのようなコードになるのでしょうか?
↓
テーブルにレコードがない場合に新しいレコードを作成し、
その後に保存する処理を
VBAで実装するためのサンプルコードを以下に示します。
このコードは、ボタン2押下時に
テーブルにレコードがない場合に新しいレコードを作成し、
その後に保存する処理を行います。
```vba
Private Sub CommandButton2_Click()
' 変数宣言
Dim rst As DAO.Recordset
' テーブルのレコードセットを開く
Set rst = CurrentDb.OpenRecordset(
"YourTableName", dbOpenDynaset)
' テーブルにレコードが存在しない場合
If rst.RecordCount = 0 Then
' 新しいレコードを作成
DoCmd.GoToRecord , , acNewRec
End If
' 現在のレコードを保存
DoCmd.RunCommand acCmdSaveRecord
' 後処理
rst.Close
Set rst = Nothing
End Sub
```
このコードでは、まずレコードセットを開き、
テーブルにレコードが存在しない場合に
`DoCmd.GoToRecord , , acNewRec`
を実行して新しいレコードを作成します。
その後、
`DoCmd.RunCommand acCmdSaveRecord`
を使用して現在のレコードを保存します。
テーブル名を`YourTableName`に置き換えて使用してください。
また、必要に応じてエラーハンドリングを追加することをお勧めします。
いかがでしょうか?他にも質問があれば教えてください。
コメント
コメントを投稿