通过TADODataSet访问mdb数据库
在对DataSet当前记录修改后,Post,然后copy数据库作为一个存盘文件,
再打开存盘文件时,那条记录还是修改前的。
但是,单步调试的时候是对的,是不是缓存的问题?如何解决?
难道DataSet一定要Close?

解决方案 »

  1.   

    TADODataSet的locktype属性要是ltOptimistic才行,你的可能是ltBatchOptimistic
      

  2.   

    locktype属性已经是是ltOptimistic
      

  3.   

    那你追踪一下,看copy文件时到底有没有post
      

  4.   

    用了事务?三层?
    如果以上两种都不是的话,你就在COPY文件前先打开看是否已经更新?如果没有,单步执行检查一下!
      

  5.   

    不是Post
    而是UpdateApply(-1)应该是这个,你试一下
    最好还是用Update
      

  6.   

    TADODataSet 好像没有UpdateApply方法吧,
    存盘前调用一下DataSet.Refresh;
    结果又是正确的,缺点是,与此绑定的datagrid会刷新一下,不够完美。
      

  7.   

    应该不需要DataSet.Refresh;
    我已调试过,
    当POST后,数据会立即保存到数据库中,不需在再关闭!
    但如果你在程序中用Copy的方法保存备份,必须把数据连接全断开,不然“Copy”这个命令不能执行!
    上述并不是数据保存的问题,而是copy命令没有执行成功的原因!
      

  8.   

    我以前也有碰到过这样的问题:
    原因所在就是必须把数据集的连接全部断开,即设置Connected :=False
    用Copy才可执行成功!
      

  9.   

    如果Connected :=False
    那相应的DataSet也就Close
    与DataSet绑定的界面内容就空了,还要手动打开DataSet,界面要重新刷新,不是很不爽?
      

  10.   

    如果Connected :=False
    那相应的DataSet也就Close
    与DataSet绑定的界面内容就空了,还要手动打开DataSet,界面要重新刷新,不是很不爽?------------------------------------------------------------------------------------
    你可以用一个TempQuery来处理COPY
      

  11.   

    没有办法,
    用copy的方法做备份,不关闭所有数据集,你没有办法备份成功!这是一定的!
    除非你另外从新生成一个MDB文件!
      

  12.   

    可以用 Backup作备份,无须关闭任何数据库
      

  13.   

    不对,
    copy是可以成功的,只不过如我所说,有些数据没有更新