在使用adoquery组件和dbgrid和dbedit组件时,当在dbgrid记录向上向下操作时,顺便更改dbedit内容。结果记录结果竟然自己被保存起来。也就是没有单击保存按钮它就自动被保存了。我现在要控制一下。即在adoquery组件的记录指针移动而且确定记录有被修改之前判断是否保存该操作结果。可是我现在还不知道该事件到底是什么事件。试了几个都不是那种效果。要不就是管它修改没修改都蹦出是否保存对话框,要不就是修改完了也移动了也没有看到对话框。
请高手指示,有什么两全其美的办法控制。多谢了。

解决方案 »

  1.   

    你既然有DBGrid和DBEdit,那肯定有DataSource,DataSource的OnDataChange就是你所需要的
      

  2.   

    呵呵,这个想法很好。可以获取rsClone:=rs.clone,然后比较两者差异,但具体怎么比较我不太清楚。
    保存后更新rsClone值。
    一般我在用DBEDIT做编辑的时候,都屏蔽掉自动保存功能,然后在按钮事件里用adoconnection.execute ('insert into....../update')来执行保存,或者用adodataset的update来保存。虽然麻烦了点,但比用DBEDIT直接保存好得多
      

  3.   

    注意一下 adoquery组件的 LockType属性,你如果设为ltOptimistic,就会出现你说的情况,只要移动记录就会保存,设为ltBatchOptimistic就不会了。试试吧。
      

  4.   

    不要用DBEDIT,虽然很方便,但是也能带来很多问题!