请教高手: 我的executeSql 公共模块为何总是报错???

huhongxuan 2006-03-17 05:03:01
各位大侠,我最近在学写vb+sql server2000 的应用程序。

在我的模块中我写了以下函数:

Public Function ExecuteSQL(ByValSQL As String, MsgString As String) _
As ADODB.Recordset
‘执行SQL语句,并返回记录集对象
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
‘异常处理
On Error GoTo ExecuteSQL_Error '
‘用Split函数产生一个包含各个子串的数组
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
‘打开连接
cnn.Open ConnectString
If InStr(“INSERT,DELETE,UPDATE”,UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString=sTokens(0)&”query successful”
Else
Set rst = New ADODO.Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
rst.MoveLast
get RecordCount
‘返回记录集对象
Set ExecuteSQL = rst
MsgString=”查询到”&rst.RecordCount&”条记录”
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString=”查询错误:”&Err.De脚本ion
Resume ExecuteSQL_Exit
End Function

但是运行是总是报错:用户定义类型未定义,请问这是什么原因。请高手指点!!谢谢!
...全文
100 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qxo 2006-04-08
原因是你的VB工程中末引用ADO类库!
在菜单中引用它即可:)
菜单-->工程-->引用-->Microsoft ActiveX Data Objects 2.X Library
回复
huailairen 2006-03-17
在函数里变量cnn 会自动的别销毁,
那你返回的recordsert 又不是离线记录集,
肯定会出问题的。
至少cnn应该在函数外定义。
回复
huailairen 2006-03-17
???
get RecordCount

回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-17 05:03
社区公告
暂无公告