首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时错误'3705':当对象打开时不允许操作

运行时错误'3705':当对象打开时不允许操作
EN

Stack Overflow用户
提问于 2016-04-01 10:42:54
回答 2查看 10.7K关注 0票数 0
代码语言:javascript
复制
'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

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

“无法加载控制usrGrid."

我正在使用VisualBasic6.0+ MS Access。

EN

回答 2

Stack Overflow用户

发布于 2016-04-01 11:45:13

出现运行时错误3705是因为只有客户端ADO记录集rs可以断开连接.当您试图断开服务器端ADO记录集的连接时,就会发生这种情况。您需要将ADO的CursorLocation属性设置为adUseClient。假设您的ADODB.Connection变量名为cn,则需要在打开连接之前添加以下行:

代码语言:javascript
复制
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient ' avoid error 3705
cn.Open "..."

以下是微软提供的完整示例

代码语言:javascript
复制
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

看见

票数 0
EN

Stack Overflow用户

发布于 2016-04-01 13:21:13

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

在您再次调用rs.Close之前,需要调用rs.Open。将其添加到rs.Open行之前并运行代码。

代码语言:javascript
复制
If Not rs.State = adStateClosed Then
    MsgBox "The recordset is already open"
End If
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36354274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档