各位大神:
Delphi中DBGridEh編輯完,然后上下移動后,資料會自動post,這樣要判資料集Modified判斷會為假,如何解決此問題,
因為ADOquery的Locktype設定為ltBatchOptimistic,所以資料在快取中,這時想點保存按鈕判斷資料集是否Modified,但是此時已經為假了
判斷不出修改過資料,求解。
uj5u.com熱心網友回復:
modified只能判斷當前記錄,移動后就判斷不了啦。如果開了ltBatchOptimistic,可以用UpdateStatus來判斷,或者在query的BeforePost事件中做一下處理。
uj5u.com熱心網友回復:
TDataSource.OnUpdateData 資料更新之前觸發TDataSource.OnDataChange 資料修改之后觸發
uj5u.com熱心網友回復:
我是想在保存按鈕中判斷是否有改變,如果改變則彈出提示,是否保存,這樣不能用Modified判斷的話,則沒法進行判斷了啊!uj5u.com熱心網友回復:
這個可以這樣做,一開始將保存按鈕禁用,然后在DataSource的OnStateChange中進行判斷if DataSource.State in [dsInsert, dsEdit] then
begin
btnSave.Enabled := True;
end;
uj5u.com熱心網友回復:
只能在資料集內部判斷, 外部判斷基本上沒辦法,TDataSet 有記錄集與緩沖區, 你想判斷是否修改只能從記錄集與緩沖區進行比較
uj5u.com熱心網友回復:
資料集的changecount>0uj5u.com熱心網友回復:
在表單里定義一個變數IsChanged:Boolean;
資料集的AfterPost里
IsChanged:=True;
AfterOpen里
IsChanged:=False;
保存事件后
IsChanged:=False;
uj5u.com熱心網友回復:
補充:在資料集的AfterPost里就可以將保存按鈕打開了
uj5u.com熱心網友回復:
用clientData ,用changeCount,這個還要結合控制界面的enable ,好久沒搞資料庫方面有點生了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/8195.html
標籤:語言基礎/算法/系統設計
