让VB快速读取数据库的函数中,为什么"rs.MoveFirst "会出错啊?
让VB快速读取数据库的函数中,为什么"rs.MoveFirst "会出错啊?Set rs = GetDb("set.mdb", "select * from Set_SmtpMail")
MsgBox rs("smtpname")
rs.MoveFirst ' 为什么会在这句上出错啊?
MsgBox rs("smtpname")
Public Function GetDb(ByVal aDbFile As String, ByVal aSql As String)
Dim Conn, SQL
Dim ConnectionString As String
Set Conn = CreateObject("ADODB.Connection") '连接数据库
Conn.Open "provider=Microsoft.Jet.oledb.4.0;" & "data source=" & aDbFile
Dim rs As New ADODB.Recordset
SQL = aSql
rs.Open SQL, Conn, 1, 2
GetDb = rs
Set rs = Nothing
Set Conn = Nothing
End Function --------------------编程问答-------------------- 是不是BOF为真啊?
if rs.BOF=false then
rs.Movefirst
End if --------------------编程问答-------------------- 总共有9个记录呢,监视了一下,函数返回的值好像不是记录集了,好像是一个集合一样的数值 --------------------编程问答-------------------- 看看返回了什么
另外研究下rs.Open SQL, Conn, 1, 2
1,2是什么意思,这两个参数决定你rs的形式 --------------------编程问答-------------------- Public Function GetDb(ByVal aDbFile As String, ByVal aSql As String) as Recordset --------------------编程问答-------------------- Set rs = GetDb("set.mdb", "select * from Set_SmtpMail")
if rs.recordcount>0 then'必须进行判断
MsgBox rs("smtpname")
rs.MoveFirst ' 为什么会在这句上出错啊?
MsgBox rs("smtpname
........
end if
--------------------编程问答-------------------- 函数中,RS已经被释放掉了,如何RS.MOVEFIRST?看4楼 --------------------编程问答-------------------- rs.Open SQL, Conn, 1, 2
研究一下1代表啥意思,2代表啥意思? --------------------编程问答--------------------
1,2这个问题不大,一般在客户端游标时,1,2可能不支持,但是ado会自动修改,使用最合适的参数代替之 --------------------编程问答-------------------- Set rs = GetDb("set.mdb", "select * from Set_SmtpMail")
这后面为啥不判断一下有没有数据? --------------------编程问答--------------------
这个是正解.研究一下对你有帮助. --------------------编程问答-------------------- Set rs = Nothing
Set Conn = Nothing
End Function
已经释放对像 再操作rs 当然出错了 --------------------编程问答-------------------- 试试:
Public Function GetDb(ByVal aDbFile As String, ByVal aSql As String)
Dim Conn, SQL
Dim ConnectionString As String
Set Conn = CreateObject("ADODB.Connection") '连接数据库
Conn.Open "provider=Microsoft.Jet.oledb.4.0;" & "data source=" & aDbFile
Dim rs As New ADODB.Recordset
SQL = aSql
rs.Open SQL, Conn, 1, 2
Set GetDb = rs.Clone(adLockReadOnly)
Set rs = Nothing
Set Conn = Nothing
End Function
补充:VB , 数据库(包含打印,安装,报表)