Vba 运行时错误“3705”:对象打开时不允许操作

Vba 运行时错误“3705”:对象打开时不允许操作,vba,vb6,runtime,runtime-error,Vba,Vb6,Runtime,Runtime Error,我的编码有问题吗?我检查了日志,日志上写着: 无法加载控件usrGrid 我正在使用Visual Basic 6.0+MS Access。由于只能断开客户端ADO记录集的连接,因此出现运行时错误3705。当您尝试断开服务器端ADO记录集时,会发生此错误。您需要将ADO记录集的CursorLocation属性设置为adUseClient。假设您的ADODB.Connection变量名为cn,您需要在打开连接之前添加以下行: 'Redundancy checking function Private

我的编码有问题吗?我检查了日志,日志上写着:

无法加载控件usrGrid


我正在使用Visual Basic 6.0+MS Access。

由于只能断开客户端ADO记录集的连接,因此出现运行时错误3705。当您尝试断开服务器端ADO记录集时,会发生此错误。您需要将ADO记录集的CursorLocation属性设置为adUseClient。假设您的ADODB.Connection变量名为cn,您需要在打开连接之前添加以下行:

'Redundancy checking function
Private Function Redundancy_Check(Sup_ID)
rs.Open "Select*from tblSupplier where Supplier_ID='" & Sup_ID & "'", cn, 3, 3
If rs.RecordCount > 0 Then
    If Not (rs.BOF And rs.EOF) Then
        iTerminate = True
    End If
End If
Set rs = Nothing
End Function
下面是Microsoft提供的完整示例

Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient ' avoid error 3705
cn.Open "..."


另一个潜在的原因是rs已经打开了一个记录集。因为你的代码在你的方法中没有暗显和初始化rs,所以我假设它是作为一个模块变量创建的,并且它看起来不像是被关闭的

在某个地方,您需要先呼叫rs.Close,然后才能再次呼叫rs.Open。在rs之前添加此项。打开行并运行代码

Private Sub Command1_Click()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

'Place cn.CursorLocation = adUseClient here
cn.Open "Provider=SQLOLEDB;Data Source=<SQL Server>;Initial Catalog=pubs;User Id=<UID>;Password=<PWD>" 
rs.Open "Select * from authors", cn, adOpenStatic, adLockBatchOptimistic

Set rs.ActiveConnection = Nothing

rs.Close
cn.Close

End Sub
If Not rs.State = adStateClosed Then
    MsgBox "The recordset is already open"
End If