需求:
已知 申购数量 / 单重 = 支数,其中[支数]为自动计算列,且 [支数] 字段实际存在于数据库中
特殊情况:
当单重为0时,支数为0
当 1 > 支数 > 0时,支数=1
procedure TFraModleBase.TV申购清单EditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem); var 申购数量,单重: Single; iPcs: Integer; begin iPcs := 0; with TV申购清单 do begin //当修改的字段为 申购数量 或者 单重字段时开始自动计算支数 if Controller.FocusedColumn.Index in [colSG申购数量.Index, colSG单重.Index] then begin dm.FD申购清单.Post ; //用户在修改完成后必须先Post一下,才能取到用户提交的数据 申购数量:= DM.FD申购清单.FieldByName ('申购数量').AsSingle ; 单重 := DM.FD申购清单.FieldByName ('单重').AsSingle; if 单重 = 0 then iPcs := 0 else begin if FormatFloat('0', 申购数量/ 单重) = '0' then iPcs := 1 else iPcs := StrToInt(FormatFloat('0', 申购数量/ 单重)); //四舍五入,只保留整数 end; end; end; //把支数写入数据库 with DM.FD公共查询 do begin Close; sql.Text := Format('update 申购清单 set 支数=%d', [iPcs]); ExecSQL; end; //更新数据表 DM.FD申购清单.Active := False; DM.FD申购清单.Active := True; end;
标签:TcxGrid,delphi,单重,iPcs,自动,申购,清单,FD,支数 From: https://www.cnblogs.com/yoooos/p/16803739.html