Access VBAを使用して、フォーム内のデータを更新する方法を学びましょう。特に、別のテーブルから取得したデータを編集し、その内容を元のテーブルに保存する方法に焦点を当てます。
フォームからデータを取得して編集する方法
まず、フォームに表示されたデータはDLookupなどで取得されます。これにより、ボタンが押された際にIDを基にしたデータが別テーブルから取得され、フォームの各項目に自動的に表示されます。
コード内で、たとえば「版数」「発行日」「担当者」などの項目をDLookupで取得して表示させることができます。次に、ユーザーがこれらの項目を編集すると、その内容を元のテーブルに保存する操作が必要になります。
フォームで取得したデータを保存する方法
フォームに入力されたデータを保存するには、レコードを更新する必要があります。これは、SQLクエリを使って特定のIDに対応するレコードを検索し、編集してから更新することで実現できます。
下記のように、SQL文を使用してレコードを検索し、編集する方法を示します。
strSQL = "SELECT ID FROM 連絡書01 WHERE ID = " & Me.ID & ";"
Set Rst02 = CurrentDb.OpenRecordset(strSQL)
If Not Rst02.EOF Then
Rst02.Edit
Rst02.Fields("版数") = Me.版数01
Rst02.Fields("発行日") = Me.発行日01
Rst02.Fields("担当者") = Me.担当者01
Rst02.Fields("所属") = Me.所属01
Rst02.Update
Rst02.Close
End If
Set Rst02 = Nothing
このコードは、指定したIDを持つレコードを取得し、そのレコードの各項目をフォームから入力された値で更新しています。注意すべきは、編集後に「Update」を呼び出してレコードを保存する点です。
問題が発生する場合のチェックポイント
もしデータが更新されない場合は、次の点をチェックしてみてください。
- SQL文が正しいか、特にIDフィールドの参照が間違っていないか確認
- フォームのフィールド名が正しいか(Me.版数01などが正しいフィールドを参照しているか)
- 編集モードのレコードが正しく開かれているか、EOF(End Of File)で判定しているか確認
これらのチェックを行うことで、データ更新が正しく行われるはずです。
まとめ
Access VBAを使用して、フォームから取得したデータを編集し、元のテーブルに保存する方法はSQL文を利用したレコードの操作が基本です。データの取得と保存のフローをしっかり理解することが、フォームのデータ更新を成功させるためのカギとなります。


コメント