困了我几天了,ado记录集用什么方法可以强行关闭呀?因为如果改了值但是没有update或cancelupdate就无法关闭。
-------------------------------
比如:rs("jfajsdf")="daskfj"后,由于某些原因并没有执行rs.update,
可是我需要用这个记录集再次打开新数据。所以必须关闭它才行。可是我发现是无法被关闭的。
用on error resume next,也不行。我想得到强行关闭。如何做到呀?
我想实现不论记录集上次是否更新成功,或是否进行过更新,我都要用这个记录集再次打开新的数据。
大家是如何做的呢?
总不能每次rs.close前都执行一句rs.cancelupdate吧。
谢谢先。

解决方案 »

  1.   

    这个跟update没有任何关系,只和recordset的状态有关如果recordset是开启的,当然只有关闭了才可以啊一般这样写:
      If rs.State <> adStateClosed Then rs.Close
      rs.Open "select * from tablename",conn,3,3
      

  2.   

    这个跟update没有任何关系,只和recordset的状态有关如果recordset是开启的,当然只有关闭了才可以啊一般这样写:
      If rs.State <> adStateClosed Then rs.Close
      rs.Open "select * from tablename",conn,3,3
    ------------------
    不会吧.你难道没试过吗?如果一个可更新的记录集打开后,修改了值,再这样关闭,你关得了吗?
    难道你没用过ado记录集吗?
      

  3.   

    一般这样写:
      If rs.State <> adStateClosed Then rs.Close
      rs.Open "select * from tablename",conn,3,3
    -----------------------
    正因为用这种方式关不了,我才问的呀!
      

  4.   

    //比如:rs("jfajsdf")="daskfj"后,由于某些原因并没有执行rs.update这种情况是不允许的,不update为什么要修改它的值?不update就cancelupdate,不能就撒手不管了~
      

  5.   

    //比如:rs("jfajsdf")="daskfj"后,由于某些原因并没有执行rs.update这种情况是不允许的,不update为什么要修改它的值?不update就cancelupdate,不能就撒手不管了~
    --------------------
    谢谢,可是有些特别情况下是会有这种情况下,是不是可以在每次close之前,不管有没有更新,统一先rs.cancelupdate ,不知这种做是否可以.
    为什么会产生这种现象呢?
    因为有时要一个字段一个字段地验证.正常后就 rs("f1") = text1.text
    有可能验证到某一个不正常,就不能rs.update了,可是rs("f1")已经变了.这时我想不管它,直接关闭.我想也是正常的吧.
      

  6.   

    请问你是通过什么方法更改数据,直接在DataGrid控件中更改吗?
      

  7.   

    ......
    set rs=new ado........
      

  8.   

    set rs=nothing
    ------------
    在未关闭的情况下,是无法set rs = nothing的吧.
      

  9.   

    呵呵,看了半天明白了楼主的错误在哪里了.楼主在没有确定输入是否有效的时候,就直接把记录中的值进行了修改.
    老实说,这可不是一个好方法.无论你是用的何种方法来打开记录,
    首先,楼主现在的方法这样需要将一个记录长时间保持锁定状态,
    其次,应该先对数据进行有效性验证,然后再对记录进行修改.
    最后,最重要的一点,对数据记录的修改,只在UPADTE的那一刹那才进行.举个简单例子:
    TEXT控件用来显示和修改数据,(不使用数据绑定), 
    比如相对应的数据记录: A("BB")是个数据型字段按钮"修改"按下之后(比如只是让那个"确定"按钮激活,其他什么也没有做)
    你在TEXT里写东西,再按"确定"(就是刚刚被激活的那个)
    在"确定"按钮中,要做所有的事:
    1: 有效性检验:TEXT中的内容是否数字阿?如果是,转化为数字
    2: 把数据写进记录,(肯能还先要有A.EDIT要看你的数据库打开方式)
    3: A.UPDATE如果你按的是"取消"(这个按钮也应该和"确定一起被激活吧)
    老实说,你什么都不用干,再把A("BB")里面的内容往TEXT里填一次就算恢复了.
    最后说一句.
    cancelupdate可不是什么好东西
    看名字就是一个"后悔药"
    但是很多时候等到后悔再来可真的不是什么好事.
      

  10.   

    WallesCai(天若有情天亦老, 人间正道是沧桑!) 
    ----------------------------
    谢谢你呀.你说得太好了,对我帮助很大.
    您才是真正的高手呀,分析问题如此透彻,非"莫依"之流可比呀!