标题:连接无法用于执行此操作。在此上下文中它可能已被关闭或无效
只看楼主
leaflet
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2014-3-2
结帖率:50%
已结贴  问题点数:16 回复次数:3 
连接无法用于执行此操作。在此上下文中它可能已被关闭或无效
在ACTIVEX DLL里面放置窗体,加一个模块

执行连接SQL

执行查询语句时报错了,如题

程序代码:
'连接SQL的模块
Public conn As ADODB.Connection
Public rs As ADODB.Recordset
Public addFlag As Boolean      '声明部分

Public Function OpenCn(ByVal Cip As String, ByVal users As String, ByVal pw As String) As Boolean '连接模块 填写数据库等信息
'On Error GoTo err
    Set conn = New ADODB.Connection

        conn.ConnectionTimeout = 10

        conn.Provider = "sqloledb"
        conn.Properties("data source").Value = Cip     '服务器的名字
        conn.Properties("initial catalog").Value = "DateCenter"      '库名
        'conn.Properties("integrated security").Value = "SSPI"      '登陆类型
        conn.Properties("user id").Value = users 
        conn.Properties("Persist Security Info").Value = False
        conn.Properties("password").Value = pw '密码
'        conn.CursorLocation = adUseServer
        conn.Open
        OpenCn = True
    If conn.State = 1 Then addFlag = True
        Exit Function
'err:
'      MsgBox err.Number & vbCrLf & err.Description, vbCritical

End Function

'关闭数据库,释放连接
Public Sub cloCn()
On Error Resume Next
If conn.State <> adStateClosed Then conn.Close
Set conn = Nothing
End Sub

Public Function openRs(ByVal strsql As String) As Boolean      '连接数据库记录集
Dim mag As String
Dim rpy As Boolean
'On Error GoTo ERR
     Set rs = New ADODB.Recordset
     If addFlag = False Then rpy = True
     With rs

     .ActiveConnection = conn
     .CursorLocation = adUseClient
     .CursorType = adOpenKeyset
     .LockType = adLockOptimistic
'     Debug.Print strsql
     .Open strsql
     End With
     addFlag = True
     openRs = True
     Exit Function
'ERR:
'
''调用自定议消息窗口
'     info
'     openRs = False
'     Exit Function
''     End
End Function
Public Sub cloRs()
'On Error Resume Next
If rs.State <> adStateClosed Then rs.Clone
Set rs = Nothing '释放记录集
End Sub

搜索更多相关主题的帖子: color 上下文 
2016-06-13 10:02
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:16 
1、静态分析,这句是啥意思:
rs.Clone
倒数第三行

2、动态分析,没条件,你的报错是哪一行报错,是从哪里调到哪个函数出错?

3、程序结构分析:
conn 是全局变量,没错,推荐是一个程序一个库只用一个连接。
RS 用全局变量,不建议。RS是随时使用,随时关闭。它的生存期一般建议是用于 函数的生存期,跨函数/过程调用使用按地址传参。


授人于鱼,不如授人于渔
早已停用QQ了
2016-06-13 10:11
leaflet
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2014-3-2
得分:0 
回复 2楼 风吹过b
     .CursorLocation = adUseClient
     .CursorType = adOpenKeyset
     .LockType = adLockOptimistic
'     Debug.Print strsql
     .Open strsql      ------  这句报错   
     End With
2016-06-13 10:19
leaflet
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2014-3-2
得分:0 
回复 2楼 风吹过b
问题找到了,窗体初始化时调用CALL OPENCN写错了
2016-06-13 10:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-465898-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.343844 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved