• ベストアンサー

AccessVBA でテーブルを修正したい

AccessVBA でフォームからテーブルを修正したいです。 [Forms]![メイン]![cmb_氏名選択](コンボボックス)から名前を選択して郵便番号と住所を表示させることはできたのですが、住所と郵便番号を修正すると、rs.Update でエラーになってしまいます。 どなたか解決方法を教えてください。 ソースは下記になります。 Private Sub cmd修正_Click() Dim rs As New ADODB.Recordset Dim cn As ADODB.Connection '---オブジェクト変数へ代入 Set cn = Application.CurrentProject.Connection rs.Open "名簿", CurrentProject.Connection, adOpenKeyset, adLockOptimistic 'レコードを修正する If Not rs.EOF Then rs!郵便番号 = [Forms]![メイン]![txt郵便番号] rs!名前 = [Forms]![メイン]![cmb_氏名選択] rs!住所 = [Forms]![メイン]![txtcmb] '更新する rs.Update '←ここでエラーになる。 End If '---閉じる rs.Close cn.Close MsgBox "修正しました" End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

rs.Open "名簿", CurrentProject.Connection, adOpenKeyset, adLockOptimistic を rs.Open "select * from 名簿 where 名前='" & cmb_氏名選択 & "'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic それと Set cn = Application.CurrentProject.Connection としてるから rs.Open "select * from 名簿 where 名前='" & cmb_氏名選択 & "'", cn, adOpenKeyset, adLockOptimistic とするか、 Dim cn As ADODB.Connection Set cn = Application.CurrentProject.Connection cn.Close はいらない。 それと、詳しくないのだが、openしてないのに cn.Close は必要なのか? cmd修正_Click() でよばられてるので、そのフォームのVBAに書いているので、 [Forms]![メイン]![txt郵便番号] などは txt郵便番号 または Me.txt郵便番号 でいいのではないか? ところで名前をキーにすると同姓同名の場合は困らないか? Private Sub cmd修正_Click() Dim rs As New ADODB.Recordset rs.Open "select * from 名簿 where 名前='" & cmb_氏名選択 & "'", CurrentProject.Connection, adOpenKeyset, adLockOptimistic If Not rs.EOF Then rs!郵便番号 = Me.txt郵便番号 rs!名前 = Me.cmb_氏名選択 rs!住所 = Me.txtcmb rs.Update MsgBox "修正しました" Else MsgBox "データがありません" End If rs.Close End Sub

その他の回答 (1)

  • nmktksk
  • ベストアンサー率36% (75/208)
回答No.1

Private Sub cmd修正_Click() Dim rs As New ADODB.Recordset Dim cn As ADODB.Connection '---オブジェクト変数へ代入 Set cn = Application.CurrentProject.Connection rs.Open "名簿", CurrentProject.Connection, adOpenKeyset, adLockOptimistic 'レコードを修正する If Not rs.EOF Then rs.edit else rs.addnew End If rs!郵便番号 = [Forms]![メイン]![txt郵便番号] rs!名前 = [Forms]![メイン]![cmb_氏名選択] rs!住所 = [Forms]![メイン]![txtcmb] '更新する rs.Update '←ここでエラーになる。 '---閉じる rs.Close cn.Close MsgBox "修正しました" End Sub 試してはいません。

tuyo1980
質問者

補足

rs.edit でとまりました。

関連するQ&A