function TForm5.IsFieldChanged(aDataSet: TkbmMWCustomClientQuery; aFieldName: string): Boolean; var i: TkbmNativeInt; pRec, pOrigRec, pOldRec: PkbmRecord; st: TUpdateStatus; aOldV, aNewV: Variant; IsFieldValueChanged:Boolean; begin if ADataSet.FindField(aFieldName)=nil then raise EMemTableError.Create('当前数据集无此字段.'); IsFieldValueChanged:=False; pRec := pkbmRecord(aDataSet.ActiveBuffer); if pRec = nil then Exit; pOrigRec:=pRec; while pOrigRec^.PrevRecordVersion <> nil do begin pOrigRec := pOrigRec^.PrevRecordVersion; end; if pRec^.UpdateStatus = usDeleted then begin if pOrigRec^.UpdateStatus = usInserted then st := usUnmodified; //增加的记录又删除记为usUnmodified. end else if pOrigRec^.UpdateStatus = usInserted then st := usInserted else st := pRec^.UpdateStatus; if st = usModified then with aDataSet do begin pOldRec := OverrideActiveRecordBuffer; try OverrideActiveRecordBuffer := pRec; // 指向修改后的数据 aNewV := FieldByName(aFieldName).Value; OverrideActiveRecordBuffer := pOrigRec; // 指向修改前的数据 aOldV := FieldByName(aFieldName).Value; if aNewV <> aOldV then begin IsFieldValueChanged:=True; end; finally OverrideActiveRecordBuffer := pOldRec; end; end; result:=IsFieldValueChanged; end;
kbmMWClientQuery判断一个字段是否修改?
猜你喜欢
转载自www.cnblogs.com/kinglandsoft/p/10845367.html
周排行