私は、新規または既存の顧客に関する情報を更新するために、ユーザーにバインドフォームを使用しています。今は、私はVBAを使って新しいレコードを追加または保存する方法がわからないため、SubmitボタンでAdd New Recordマクロを使用しています。VBAを使用してMS Accessで新しいレコードを追加する方法?
VBAを使用して更新前イベントを追加して、フォームを終了する前に変更を保存することをユーザーに確認させました。何らかの理由でこれがレコードの追加ボタンを無効にしているため、ユーザーはフォームを終了するまで新しいレコードを追加できません。
VBAを使用して新しい顧客情報を正しいテーブルに追加するにはどうすればよいですか?代わりにマクロで行うべきことですか?
フォームのBeforeUpdateコード:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strmsg As String
strmsg = "Data has been changed."
strmsg = strmsg & " Save this record?"
If MsgBox(strmsg, vbYesNo, "") = vbNo Then
DoCmd.RunCommand acCmdUndo
Else
End If
End Sub
録音ボタン追加:、VBAを使用してレコードを提出ボタンのOn Click
イベントを作成し、そのSub
に次のように実行するために
Private Sub btnAddRecord_Click()
Dim tblCustomers As DAO.Recordset
Set tblCustomers = CurrentDb.OpenRecordset("SELECT * FROM [tblCustomers]")
tblCustomers.AddNew
tblCustomers![Customer_ID] = Me.txtCustomerID.Value
tblCustomers![CustomerName] = Me.txtCustomerName.Value
tblCustomers![CustomerAddressLine1] = Me.txtCustomerAddressLine1.Value
tblCustomers![City] = Me.txtCity.Value
tblCustomers![Zip] = Me.txtZip.Value
tblCustomers.Update
tblCustomers.Close
Set tblCustomers = Nothing
DoCmd.Close
End Sub
私はかなり混乱しています。バインドされたフォームにレコードを追加するには、フォームの下部ペインにある新しいレコードのナビゲーションボタン(アスタリスク付きの右矢印)をクリックするだけです。また、BeforeUpdateルーチンは '.OldValue'プロパティを利用していますか?これは、コントロールを終了するとすぐに編集内容がテーブルに保存されるため、バインドされたフィールドをコミットしないことがわかっている唯一の方法です。したがって、 '.OldValue'を指定しないと、あなたのルーチンが遅すぎるので、おそらくフォーム上ではなく、各コントロールのBeforeUpdateイベントに追加する必要があります。明確化するために、送信ボタンとbeforeupdateイベントのコードを投稿してください。 – MoondogsMaDawg
クイック返信をありがとう。私はモバイル上にいるので、私が使用しているコードを貼り付けました。レコードを追加しすぎているのか、更新の前に私に知らせてください。 FYIこれらのコードは各フォームの各レコードの追加ボタンに表示されます。エラープルーフィングまたは改善に関する推奨事項はすばらしいでしょう。もう一度ありがとう – New2This