我做了一个模块,专门做为数据库连接或者断开时使用,但老是提示错误如下“编译错误!参数不可用”
我的代码如下,请各位帮忙看看,刚开通帐户没什么可用分还请见凉,
以下为ADO连接模块的语句:
Private cnn As New ADODB.ConnectionPublic Sub DBconnect()
cnn.ConnectionString = "Provider = microsoft.jet.oledb.4.0;persist security info = false;data source = " & PJPath & "\Inbound Data System.mdb;jet oledb:DataBase password = "
cnn.Open
End SubPublic Sub DBDisconnect()
cnn.Close
Set cnn = Nothing
End SubPublic Function rs(ByVal sqlstmt As String) As ADODB.Recordset
Dim rst As New ADODB.Recordset
DBconnect
Set rst.ActiveConnection = cnn
rst.Open sqlstmt
Set rs = rst
End Function以下为主程序调用的过程,到了"If Not rs.EOF Then"就提示错误了:
Public Sub CN_QF() 'select [DMQY NO]
On Error Resume Next
sql_f = "Select distinct[DMQY NO] from [fabric details]"
sql_t = "Select distinct[DMQY NO] from [Packing List]" rs (sql_f)
If Not rs.EOF Then
Label_DMQYNO.Caption = CStr(rs(0).Value)
Lab_Res.Caption = CStr(rs(0).Value)
Else: rs (sql_t) 'Set rs = conn.Execute(sql_t)
Label_DMQYNO.Caption = CStr(rs(0).Value)
Lab_Res.Caption = CStr(rs(0).Value)
End Ifrs.Close
Set rs = Nothing
DBDisconnect
End Sub
我的代码如下,请各位帮忙看看,刚开通帐户没什么可用分还请见凉,
以下为ADO连接模块的语句:
Private cnn As New ADODB.ConnectionPublic Sub DBconnect()
cnn.ConnectionString = "Provider = microsoft.jet.oledb.4.0;persist security info = false;data source = " & PJPath & "\Inbound Data System.mdb;jet oledb:DataBase password = "
cnn.Open
End SubPublic Sub DBDisconnect()
cnn.Close
Set cnn = Nothing
End SubPublic Function rs(ByVal sqlstmt As String) As ADODB.Recordset
Dim rst As New ADODB.Recordset
DBconnect
Set rst.ActiveConnection = cnn
rst.Open sqlstmt
Set rs = rst
End Function以下为主程序调用的过程,到了"If Not rs.EOF Then"就提示错误了:
Public Sub CN_QF() 'select [DMQY NO]
On Error Resume Next
sql_f = "Select distinct[DMQY NO] from [fabric details]"
sql_t = "Select distinct[DMQY NO] from [Packing List]" rs (sql_f)
If Not rs.EOF Then
Label_DMQYNO.Caption = CStr(rs(0).Value)
Lab_Res.Caption = CStr(rs(0).Value)
Else: rs (sql_t) 'Set rs = conn.Execute(sql_t)
Label_DMQYNO.Caption = CStr(rs(0).Value)
Lab_Res.Caption = CStr(rs(0).Value)
End Ifrs.Close
Set rs = Nothing
DBDisconnect
End Sub
解决方案 »
- VB 除了Winsock1的UDP和TCP传还有别的传输方式吗?
- 一个简单的问题,如何将字符转为数字,1,820.00变成1820.00
- 在线等!!!!!!!!急急!!!!!!!
- 【问】超简单的,如何让ComboBox显示出&符号?(版本 VB5)
- 版主来看一下,这个算不算刷屏?没有意义的问题在每一个版块都发一个贴。
- (急!!!)怎样得到DTPicker的时间?
- 急需解决的问题,有请大家帮忙!
- 请问如何不用commondialog控件打开对话框?
- 我有问题,青帮我
- 对高手区“如何知道 CD-ROM 的托盘状态(打开/关闭)?”的看法
- VB 调用flash为什么播放flash的时候会卡?
- vc DLL调用约定错误
改成
rs.open sql_f
cnn.ConnectionString = "Provider = microsoft.jet.oledb.4.0;persist security info = false;data source = " & PJPath & "\Inbound Data System.mdb;jet oledb:DataBase password = "
cnn.Open
End SubPublic Sub DBDisconnect()
cnn.Close
Set cnn = Nothing
End SubPublic Function OpenRS(ByVal sqlstmt As String) As ADODB.Recordset
Dim rst As New ADODB.Recordset
DBconnect
Set rst.ActiveConnection = cnn
rst.Open sqlstmt
Set rs = rst
End Function以下为主程序调用的过程,到了"If Not rs.EOF Then"就提示错误了:
Public Sub CN_QF() 'select [DMQY NO]
On Error Resume Next
dim rs as adodab.recordset
sql_f = "Select distinct[DMQY NO] from [fabric details]"
sql_t = "Select distinct[DMQY NO] from [Packing List]" set rs=openrs (sql_f)
If Not rs.EOF Then
Label_DMQYNO.Caption = CStr(rs(0).Value)
Lab_Res.Caption = CStr(rs(0).Value)
Else: rs (sql_t) 'Set rs = conn.Execute(sql_t)
Label_DMQYNO.Caption = CStr(rs(0).Value)
Lab_Res.Caption = CStr(rs(0).Value)
End Ifrs.Close
Set rs = Nothing
DBDisconnect
End Sub
回五楼,加了"dim rs as adodab.recordset"在主程序中,是不会报错,但此函数并没有发挥作用,还有,在函数rs中已经定义了rs 为new adodb.reocrdset对象了,为什么在此处还要定义呢?
dim rs as adodab.recordset在预先定义的函数rs中已经声明过了,为何在这里还要最次声明? 加上这个声明后,程序是没报错了,但是这个函数并不能实现功能,计算不出所要的结果,
Dim rst As New ADODB.Recordset
DBconnect
Set rst.ActiveConnection = cnn
rst.Open sqlstmt
Set openrs = rst
End Function
你好,改过了,还是一样的错误提示,我在想是不是预先定义好recordset为函数,在主程序直接调用recordset函数,这种方法行不通,
还有,你改的openrs和rs有什么区别,应该都只是函数名吧?看不出是对象哦,
在主程序中,要先定义rs as new adodb.recordset
正面最用set rs = openrs(sqlstmt)
谢谢各位!