各位大虾:如何使 modified 敏感(100分)

  • 主题发起人 主题发起人 ll_yybb
  • 开始时间 开始时间
L

ll_yybb

Unregistered / Unconfirmed
GUEST, unregistred user!
我试图用 Query 的 modified 属性判断用户是否对当前数据集进行了修改
但如果用户只修改了数据集中的一个字段,就退出修改操作,例如翻到另一个Panel上而
并未在字段间移动,则 modified 属性未改变

(我用的是 DBEdit)

 
Query.Modified or (Query.State in [dsEdit, dsInsert])
 
我的要求還要復雜﹐我要求如果該值為空﹐還要新增﹐我是在query的onupdaterecord中
寫﹕(我的程式的一段)
procedure TF_w_cpxb1.q_cpxb_dessUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
q_cpxb_dess.UpdateObject:=usql_cpxb_dess;
usql_cpxb_dess.setparams(updatekind);
if (q_cpxb_dess.fieldbyname('pin_qty').oldvalue=null)and (q_cpxb_dess.fieldbyname('pin_qty').newvalue<>null)then
begin
usql_cpxb_dess.setparams(ukInsert);
usql_cpxb_dess.ExecSQL(ukInsert);
updateAction:=uaApplied;
end ;
if (q_cpxb_dess.fieldbyname('pin_qty').oldvalue<>null) and (q_cpxb_dess.fieldbyname('pin_qty').newvalue=null)then
begin
usql_cpxb_dess.setparams(ukDelete);
usql_cpxb_dess.ExecSQL(ukDelete);
updateAction:=uaApplied;
end ;
if (q_cpxb_dess.fieldbyname('pin_qty').oldvalue<>null) and (q_cpxb_dess.fieldbyname('pin_qty').newvalue<>null)then
begin
usql_cpxb_dess.setparams(ukModify);
usql_cpxb_dess.ExecSQL(ukModify);
updateAction:=uaApplied;
end;
end;
 
只要某字段有字符改动,Query.State都将会被置为dsEdit
如果是插入记录,则Query.State=dsInsert
 
多谢各位,见笑了
 
多人接受答案了。
 
后退
顶部