使用Delphi7+ADO,如何得知数据集是否发生了改变,即是否有记录值改变,或删除记录,或新增记录,目的是在关闭相关窗口时,提示用户保存数据 |
if adotable1.Modified then {//提示保存} |
我用的是事务提交,所以不能只判断当前记录的状态 |
if state in [dsinsert,dsedit] then begin end; |
如果事先读出的数据集为Dataset1,对其进行操作,在进行事务提交时,用同样的SQL语句读出数据给数据集DataSet2,然后 DataSet2.Data := DataSet1.Data; 然后判断 if ChangeCount > 0 then ..... 数据集必须为TClientDataSet; |
to LEEMA 你不觉得你的方法不是很好吗 其实楼主是把简单问题复杂化了,他点保存就开始提交数据库了,成功了肯定是对数据库进行了修改啊,其他的界面操作(不和数据库相关的)你提示他保存的话,可以用一个标志位,但要每个控件的onchange事件里写。 |
给我函数你.在你要判断的窗口的CloseQuery事件里这样调用: CanClose := DM2.DataSetApplyUpdates(DM2.cdsStockOrder, ModalResult = mrOK); function TDM2.DataSetApplyUpdates(DataSet: TDataSet; Apply: Boolean): Boolean; begin Result := True; with TDataSet(DataSet) do begin if (State in dsEditModes) or UpdatesPending then begin if Apply then begin Database.ApplyUpdates([DataSet as TDBDataSet]); CancelUpdates; end else begin if confirm('数据没有保存, 退出吗?') then Cancel // CancelUpdates else Result := False; end; end; end; end; |