一个很简单的问题,却往往被忽略,让我不知所措.关于rs记录集关闭的位置?大家帮看看阿!

不老书生 2005-06-17 04:10:39
我原来的代码是这样的

Function GetColumnValue() 行1
Dim Conn As ADODB.Connection 行2
Dim Rs As ADODB.Recordset 行3

On Error GoTo ErrorHandle 行4

Set Conn = New ADODB.Connection 行5 '?放在这个位置对不对
Set Rs = New ADODB.Recordset 行6 '?放在这个位置对不对
Conn.ConnectionString = commonYtth.getConnectionString() 行7
Conn.Open
sql = "SELECT " & NameColumnName & " from " & tableName & " where " & CodeColumnName & "='" & CodeColumnValue & "'" 行8
Rs.Open sql, Conn, 3, 2 行9

if ... then 行10
GetColumnValue="0" 行11
exit function 行12
else 行13
GetColumnValue="1" 行14
end if 行15

...

Rs.Close 行16
Set Rs = Nothing 行17
Conn.Close 行18
Set Conn = Nothing 行19

ErrorHandle: 行20
GetColumnValue = "0" 行21
Rs.Close 行22
Set Rs = Nothing 行23
Conn.Close 行24
Set Conn = Nothing 行25

End Function 行26


如果行5---行19的过程中出现错误 则直接跳到行20执行,21--25把记录关闭,但是系统报错,必须去掉rs.close,conn.close才行

我要怎样才能保证任何情况下记录集都能被关闭阿?
...全文
140 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
laozhaoskinny 2005-06-22
  • 打赏
  • 举报
回复
晕 没看清楚 大家表介意啊

偶比脚同意楼上 haipingma(今天你过得快乐吗?) 地
laozhaoskinny 2005-06-22
  • 打赏
  • 举报
回复
报错是因为errhandle前缺少exit Function 吧
haipingma 2005-06-22
  • 打赏
  • 举报
回复
改成這樣
Dim Conn As new ADODB.Connection 行2
Dim Rs As new ADODB.Recordset 行3
或16-25改成
if rs.state then Rs.Close:Set Rs = Nothing
if Conn.state then Conn.Close:Set Conn = Nothing
不老书生 2005-06-22
  • 打赏
  • 举报
回复
szjhxu 2005-06-18
  • 打赏
  • 举报
回复
你还没打开就要关闭,系统当然会报错了
不老书生 2005-06-18
  • 打赏
  • 举报
回复
正确的写法应该是什么呢?
xiaohua_app 2005-06-17
  • 打赏
  • 举报
回复
在第9行前加入:
if cn.state = adstateopen then cn.close
不老书生 2005-06-17
  • 打赏
  • 举报
回复
samying() :我把行18换成了你那句话,结果就直接跳到行20执行了!

大家快点帮帮我啊!
不老书生 2005-06-17
  • 打赏
  • 举报
回复
报的错误是:

实时错误'91'
对象变量或with块变量未设置
不老书生 2005-06-17
  • 打赏
  • 举报
回复
samying() :你说的这句话应该放在什么位置呢?

另外,大家帮我看看
On Error GoTo ErrorHandle 行4
后面的 sql语句被我msgbox出来,是明显错误的,他怎么没跳到
GetColumnValue ="0" 行21执行,
怎么还是执行GetColumnValue="1" 行14 呢?


303afei 2005-06-17
  • 打赏
  • 举报
回复
看看这样行吗
if not rs is nothing then
Rs.Close
set rs=nothing
end if
samying 2005-06-17
  • 打赏
  • 举报
回复
系统报什么样的错,你要写成这样if rs.state = adstateopen then rs.close
if cn.state = adstateopen then cn.close 试一下

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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