用一个MSHFlexGrid显示Access表中的数据,并有[添加][删除][插入][保存]等按钮。
问题是[添加][删除][插入]等操作之后MSHFlexGrid上要立即显示出来但并不保存到数据库中,在点击[保存]按钮之后才能保存。我刚开始以为Recordset 的AddNew,delete 等函数并不是立即执行,而是要等到Update之后才将结果保存到磁盘,如果是那样就好办了,我把Update写在[保存]按钮上就可以了,但是Recordset.delete会立刻保存到磁盘上,所以不能这样做。
能给我一个思路吗?

解决方案 »

  1.   

    '删除按扭中加入
    MSHFlexGrid1.RemoveItem MSH1.Row   '删除指定行,这样只是在控件里删除,不影响数据库然后再在保存按扭里操作数据库
      

  2.   

    ADO不能解决这个问题吗?.AddNew .Delete 不保存到磁盘上,只是在内存中操作,保存的时候调用某个函数才把结果保存到磁盘上,如果能这样是最简单了
      

  3.   

    你通过删除或者添加记录集再更新MSHFlexGrid何苦呢,自找麻烦
    直接在MSHFlexGrid上操作是最简单的
      

  4.   

    ADO不能解决这个问题吗?.AddNew .Delete 不保存到磁盘上,只是在内存中操作,保存的时候调用某个函数才把结果保存到磁盘上,如果能这样是最简单了
    ----------------------
    可以自定义一个记录集,记录对mshflegxrid的操作,update就根据这个记录集的信息对数据库进行操作
      

  5.   

    -.-直接用mshflexgrid去更新数据库不是更方便啊
      

  6.   

    -.-直接用mshflexgrid去更新数据库不是更方便啊
    -----------------------------
    比如用removeitem方法删除了fg中的一条信息,又不能确定是否要立即保存到数据库中。当所有其它操作都完成以后,确定保存时,你无法根据fg中的信息,去数据库中删除这条信息吧?
      

  7.   

    或者你也可以在 fg中加上一列,用来记录本行数据是添加、修改还是删除,最后就可以根据这列的信息,对数据库进行操作了。注意这样就不能用removeitem方法了,你可以做上标志后隐藏要删除的列。
      

  8.   

    注意这样就不能用removeitem方法了,你可以做上标志后隐藏要删除的列。
    --------->
    注意这样就不能用removeitem方法了,你可以做上标志后隐藏要删除的行。
      

  9.   

    一般情况修改的时候才需要保存吧,删除的话只要提一个msgbox就可以了
      

  10.   

    按我的理解,楼主的意思就是查询出数据显示在fg中,然后对这些数据任意编辑,包括添加修改删除,但在确定保存之前不要更新到数据库,这样如果不想更新时,点击一个取消按钮,就一切如初了,就如打开一个excel文件编辑,关闭窗体时取消保存一样......