【问题标题】:invalid operation when opening a record set打开记录集时的无效操作
【发布时间】:2020-07-03 16:12:38
【问题描述】:

我在针对从 SQLServer 链接的表打开记录集时遇到问题。我正在运行以下 VBA 并收到“无效操作”错误。 感谢您的帮助。

Private Sub Add_Click()
On Error GoTo Err_Add_Click
Dim myRS As DAO.Recordset
Dim myDB As DAO.Database
Dim myI As Variant, myPO As Variant, myJ As Variant
Dim myWS As Workspace

    Set myWS = DBEngine(0)
     
    Set myDB = CurrentDb
   
    Set myRS = myDB.OpenRecordset("PO_Numbers_tbl", dbOpenTable)
    
    myI = Me![End] - Me![Start] + 1

    myPO = Me![Start]
    For myJ = 1 To myI
        myRS.AddNew
        myRS![PO_Number] = myPO
        myRS.Update
        myPO = myPO + 1
    Next myJ
    
    myRS.Close
    myDB.Close
    Me.Requery
    
Exit_Add_Click:
    Exit Sub

Err_Add_Click:
    MsgBox Err.DESCRIPTION
    Resume Exit_Add_Click
    
End Sub

【问题讨论】:

  • 哪一行触发错误?单步调试代码和/或禁用错误处理程序以进行调试。
  • Access 中有这个 VBA 吗?由于您只是引用表,因此实际上不涉及 SQL。
  • Access是前端,SQLServer是后端?
  • 为什么要声明和设置工作区对象然后不使用它?
  • 为什么要将myJmyImyPO 声明为变体?这些应该是数字,可能很长。

标签: vba ms-access recordset


【解决方案1】:

问题是您使用dbOpenTable 作为 Recordset 类型,这仅对本机 Access 表有效。使用 SQL Server 表时,请尝试使用dbOpenDynaset

我更愿意将链接的 SQL Server 表命名为“dbo_”,以便知道它们何时不是 Access 表。

问候,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2018-05-10
    相关资源
    最近更新 更多