【问题标题】:VBA ACCESS error 91 object variable or with block variable not setVBA ACCESS 错误 91 对象变量或未设置块变量
【发布时间】:2017-06-30 23:41:24
【问题描述】:

在一个表单中,当按下一个名为“asignar”的按钮时,我想将值插入一个名为“movimientos”的现有表中

Private Sub ASIGNAR_Click()
  Dim db As Database
  Dim rs As DAO.Recordset

  Set rs = db.OpenRecordset("MOVIMIENTOS")
  rs.AddNew
  rs("ESTATUSDOC").Value = "Blah"
  rs("FOLIOFED").Value = "Blah"
  rs("NOMBREDOC").Value = "Blah"
  rs("PREL").Value = "Blah"
  rs("CURP").Value = "Blah"
  rs.Update
End Sub

当我按下运行时,它一直显示错误:

错误 91 对象变量或未设置块变量

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    我觉得你的语法有点不对劲,你的代码应该是这样的:

    Private Sub ASIGNAR_Click()
    
       Dim db As DAO.Database
       Dim rs As DAO.Recordset
    
       Set db = CurrentDb
       Set rs = db.OpenRecordset("MOVIMIENTOS", dbOpenDynaset, dbAppendOnly)
    
       rs.AddNew
       rs("ESTATUSDOC").Value = "Blah"
       rs("FOLIOFED").Value = "Blah"
       rs("NOMBREDOC").Value = "Blah"
       rs("PREL").Value = "Blah"
       rs("CURP").Value = "Blah"
       rs.Update
    
       rs.Close 
       Set rs = Nothing 
       Set db = Nothing
    
    End Sub
    

    问题主要在于您声明和设置 db 变量的方式。我还调整了 OpenRecordset 以匹配您正在做的事情。

    【讨论】:

    • 一切都好,不过不要忘记关闭打开的记录集rs.Close 并使用Set rs = NothingSet db = Nothing 清理内存
    • @MattHall 感谢您发现这一点。
    【解决方案2】:

    变化

    Set rs = db.OpenRecordset("MOVIMIENTOS") 
    

    Set rs = CurrentDB.OpenRecordset("MOVIMIENTOS")
    

    也应该修复它。然后你可以丢失Dim db As Database

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多