求高手帮忙看看VB连接数据库问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:52:47
下面程序出现错误,查不出原因。请帮忙排错和注释一下谢谢。

Private Sub set1()
Dim Conns As New ADODB.Connection
Dim iCount As Long
Dim strUsers As String
Dim adoRs As New ADODB.Recordset
Dim strTemp As String
Call LinkDB
adoRs.Open "select * from texts where zxbz = 0 order by zxbz asc", Conns, 1, 3'这句出现“实时错误3709,连接无法执行此操作,在此上下文中可能已被关闭或无效”
If Not adoRs.EOF Then
strTemp = adoRs("uses")
End If
adoRs.Close
Conns.Close
Set adoRs = Nothing
Set Conns = Nothing
End Sub

Private Function LinkDB() '连接数据库代码
On Error GoTo LinkDB_Err
Dim strConn As String
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\msd.mdb"'这里我的数据库和文件同目录
Conn.Open strConn
Exit Function
LinkDB_Err:
MsgBox Err.Number & vbCrLf & Err.Description, , GstrAppTitle

这是我以前写的代码,你参考一下吧,我空间里有很多例子,你参考一下,这段代码没仔细看,好像没问题.这个问题你加个IF语句判断一下连接是不是处于打开状态就知道了,可能你在别的地方打开了连接没有关闭.
'*****定义数据库连接参数
Public rs As New ADODB.Connection
Public bs As New ADODB.Recordset
Public sql As String '查询字符串
Public filename As String '数据库名称
Public ctrFi '连接字符串

Public Sub connectdata()'连接数据库过程,此处为ACCESS数据库
filename = App.Path + "\" + "honshV1.mdb"
ctrFi = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & filename
If rs.State = adStateClosed Then
rs.Open ctrFi
Else
rs.Close
End If
End Sub

Conn.Open strConn 应是 Conns.Open strConn
最重要的是LinkDB里的Conns并不是set1里的Conns
变量的作用域你要好好复习一下
解决办法就是取消LinkDB函数把代码直接放进set1过程里里
或者把Conns传递给LinkDB函数

Private Function LinkDB(Conns As ADODB.Connection)
……
End Function

Call LinkDB 改成 LinkDB Conns