在窗体关闭时,如何关闭记录集呢?(很难保证记录指针在bof和eof)
在窗体关闭时,肯定要关闭记录集,然后set nothing ,可是有时记录指针处于bof或eof,或者有可能该记录集在datagrid中改过但没有用代码进行更新(或指针没移到另一行,这时如果close肯定不行的。)
问题是如何在关闭时判断一下呢?根据记录集情况进行处理,然后close和setnothing,
是不是要:
if rs.state= adstateopen then
rs.movefirst
rs.cancelupdate
rs.close
endif
set rs = nothing
在窗体关闭时,肯定要关闭记录集,然后set nothing ,可是有时记录指针处于bof或eof,或者有可能该记录集在datagrid中改过但没有用代码进行更新(或指针没移到另一行,这时如果close肯定不行的。)
问题是如何在关闭时判断一下呢?根据记录集情况进行处理,然后close和setnothing,
是不是要:
if rs.state= adstateopen then
rs.movefirst
rs.cancelupdate
rs.close
endif
set rs = nothing
该对象的引用没有了,可是还占着内存。所以要先close一下,可是在某些情况下,是不让close的。
不知我的理解对否?再次请教。
---------------------------------
好象不是呀?
比如这个记录集在datagrid中修改了,可是没有发送更新。关闭时就会报错。
为什么呀?
我也不明白,我开始也认为只要是打开的就能关闭。如果是这样的,那么何时关闭就不应报错呀?
为何有时执行close时会报错呢?
以避免出错如果没有更新,数据库会认为你当前操作还没有执行完毕,
期待你的更新,不过有些数据库又没有这个方面的安全性检测。
if rs.editmode=adeditInProgress then
rs.update
endif
rs.close
end if
set rs=nothing
关闭的时候直接写
rs.close
set rs=nothing不是很清楚么
我把记录集取到datagrid中,可以在表格中对数据进行修改。如果修改后下移一条记录指针,那么这次修改就提交了。如果这时关闭没有问题的。可是如果虽然进行了修改,但是没有下移指针,那么此时关闭就会报错。(我已经试验过了。)
我现在的实现办法是将on error goto lineno 改为:on error resume next ,
就不会报这个错了。
我不知这种办法可行否?
我看到很多示例代码在关闭记录集时就用两条语句:1。rs.close,2.set rs = nothing,
并没有判断是否处理修改模式。是不是要向师铭老师那样:
if rs.editmode=adeditInProgress then
rs.update
endif 呢?
谢谢。
On Error Goto EH
rs.close
set rs = nothingexit subEH:
On Error Resume Next
rs.update
rs.close
set rs = nothing