请教高手: 我的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

但是运行是总是报错:用户定义类型未定义,请问这是什么原因。请高手指点!!谢谢!
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧