困了我几天了,ado记录集用什么方法可以强行关闭呀?因为如果改了值但是没有update或cancelupdate就无法关闭。
-------------------------------
比如:rs("jfajsdf")="daskfj"后,由于某些原因并没有执行rs.update,
可是我需要用这个记录集再次打开新数据。所以必须关闭它才行。可是我发现是无法被关闭的。
用on error resume next,也不行。我想得到强行关闭。如何做到呀?
我想实现不论记录集上次是否更新成功,或是否进行过更新,我都要用这个记录集再次打开新的数据。
大家是如何做的呢?
总不能每次rs.close前都执行一句rs.cancelupdate吧。
谢谢先。
-------------------------------
比如:rs("jfajsdf")="daskfj"后,由于某些原因并没有执行rs.update,
可是我需要用这个记录集再次打开新数据。所以必须关闭它才行。可是我发现是无法被关闭的。
用on error resume next,也不行。我想得到强行关闭。如何做到呀?
我想实现不论记录集上次是否更新成功,或是否进行过更新,我都要用这个记录集再次打开新的数据。
大家是如何做的呢?
总不能每次rs.close前都执行一句rs.cancelupdate吧。
谢谢先。
If rs.State <> adStateClosed Then rs.Close
rs.Open "select * from tablename",conn,3,3
If rs.State <> adStateClosed Then rs.Close
rs.Open "select * from tablename",conn,3,3
------------------
不会吧.你难道没试过吗?如果一个可更新的记录集打开后,修改了值,再这样关闭,你关得了吗?
难道你没用过ado记录集吗?
If rs.State <> adStateClosed Then rs.Close
rs.Open "select * from tablename",conn,3,3
-----------------------
正因为用这种方式关不了,我才问的呀!
--------------------
谢谢,可是有些特别情况下是会有这种情况下,是不是可以在每次close之前,不管有没有更新,统一先rs.cancelupdate ,不知这种做是否可以.
为什么会产生这种现象呢?
因为有时要一个字段一个字段地验证.正常后就 rs("f1") = text1.text
有可能验证到某一个不正常,就不能rs.update了,可是rs("f1")已经变了.这时我想不管它,直接关闭.我想也是正常的吧.
set rs=new ado........
------------
在未关闭的情况下,是无法set rs = nothing的吧.
老实说,这可不是一个好方法.无论你是用的何种方法来打开记录,
首先,楼主现在的方法这样需要将一个记录长时间保持锁定状态,
其次,应该先对数据进行有效性验证,然后再对记录进行修改.
最后,最重要的一点,对数据记录的修改,只在UPADTE的那一刹那才进行.举个简单例子:
TEXT控件用来显示和修改数据,(不使用数据绑定),
比如相对应的数据记录: A("BB")是个数据型字段按钮"修改"按下之后(比如只是让那个"确定"按钮激活,其他什么也没有做)
你在TEXT里写东西,再按"确定"(就是刚刚被激活的那个)
在"确定"按钮中,要做所有的事:
1: 有效性检验:TEXT中的内容是否数字阿?如果是,转化为数字
2: 把数据写进记录,(肯能还先要有A.EDIT要看你的数据库打开方式)
3: A.UPDATE如果你按的是"取消"(这个按钮也应该和"确定一起被激活吧)
老实说,你什么都不用干,再把A("BB")里面的内容往TEXT里填一次就算恢复了.
最后说一句.
cancelupdate可不是什么好东西
看名字就是一个"后悔药"
但是很多时候等到后悔再来可真的不是什么好事.
----------------------------
谢谢你呀.你说得太好了,对我帮助很大.
您才是真正的高手呀,分析问题如此透彻,非"莫依"之流可比呀!