简单的设计一下界面,大致如下:
要求:审核或者反审核用户选择的数据
1.当记录已审核时,再点审核会提示出错,反审核也一样
2.正常点审核时,审核=true,审核人=当前用户名
3.反审核时,审核=false,审核人=null
实现代码:
procedure TForm1.UpdateData(flg: Boolean); var i, n, Errors: Integer; PN, ID: string; begin if flg then PN := 'TEST' //用户名,按业务自己处理 else PN := 'NULL'; //反审核,按业务自己处理 with FDQuery1 do begin FetchOptions.AutoClose := False; //取消自动关闭 CachedUpdates := True; //开户快储功能 TV.Controller.SelectedRows[0].Focused := True; //选择选中的第一行数据 n := TV.datacontroller.GetSelectedCount; //当前选择记录的长度 try for i := 0 to n - 1 do begin Edit;
FieldByName('审核').Value := BoolToStr(flg);//按业务自己处理 FieldByName('审核人').Value := PN;//按业务自己处理
Next; end; FDConnection1.StartTransaction; //开始事务 Errors := ApplyUpdates(0); //尝试批量更新,并返回错误值 finally if Errors > 0 then FDConnection1.Rollback //出错回滚 else begin FDConnection1.Commit; CommitUpdates; // 清除所有异动记录 Refresh; //更新数据 end; CachedUpdates := False; //关闭快储 end; end; end;
Errors := ApplyUpdates(0);标签:begin,Errors,end,FireDAC,delphi,审核,PN,ApplyUpdates From: https://www.cnblogs.com/yoooos/p/17106847.html
参数为0时,表示不容忍任何错误,直接回滚
参数为-1时,表示尽量保存修改,更新完后再报错误.
比如你要更新十条数据,其中有五条会成功,五条会失败,此时如果你参数为0的话,程序就会直接放弃所有变更,也就是不更新了.如果参数为-1,则会更新五条,然后再告诉你有五条出错了