表有3个属性:价格,数量,总额。在DBGridEh显示出来,但只要求给用户修改价格和数量,系统就可以得到总额并更新。请问改怎么实现? 表有3个属性:价格,数量,总额。在DBGridEh显示出来,但只要求给用户修改价格和数量,系统就可以得到总额并更新。请问改怎么实现?请指点,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在价格,数量兩個字段的OnSetText寫代碼:var lInput: string;begin lInput := Text; if lInput = '' then lInput := '0'; Sender.AsString := lInput; Sender.DataSet.FieldByName('總額').AsFloat := Sender.DataSet.FieldByName('數量').AsFloat * Sender.DataSet.FieldByName('价格').AsFloat;可以共用OnSetText事件 如果是sql server数据库,可以建一个触发器进行计算!也可以在sql语句中进行计算 procedure TForm1.ADOQuery1cccChange(Sender: TField); //价格、数量共用begin Sender.DataSet.FieldByName('总额').AsFloat := Sender.DataSet.FieldByName('价格').AsFloat + Sender.DataSet.FieldByName('数量').AsFloat;end;或procedure TForm1.ADOQuery1cccValidate(Sender: TField); //价格、数量共用begin Sender.DataSet.FieldByName('总额').AsFloat := Sender.DataSet.FieldByName('价格').AsFloat + Sender.DataSet.FieldByName('数量').AsFloat;end; 建议去掉金额字段以便于更新数据,但现在的话,可以数据库里回触发器,可可在在onpost时写FieldByName('总额').AsFloat :=FieldByName('价格').asfloat*FieldByName('数量').asfloat; 如图所示dbgrideh表头颜色 执行OpenDialog1.Execute后,为什么其他多线程不能执行了? 紧急求救!在先等待,简单的数学计算问题 去重复数据 求网上电子书籍下载-------------UP有分 高分重酬:C++程序员学习delphi,哪本书比较好? 用Delphi的QuickReport动态制作--流水式报表 诚邀程序员、有识之士加盟合作! 请大家帮忙看看,是不是有人想黑我的机子呀 一个编程技巧的问题 串口通讯数据接收程序,请各位大侠帮我看看能否优化一下! 关于Print Server 按行打印控制问题?请高手指点!
var
lInput: string;
begin
lInput := Text;
if lInput = '' then lInput := '0';
Sender.AsString := lInput;
Sender.DataSet.FieldByName('總額').AsFloat
:= Sender.DataSet.FieldByName('數量').AsFloat
* Sender.DataSet.FieldByName('价格').AsFloat;可以共用OnSetText事件
也可以在sql语句中进行计算
begin
Sender.DataSet.FieldByName('总额').AsFloat :=
Sender.DataSet.FieldByName('价格').AsFloat +
Sender.DataSet.FieldByName('数量').AsFloat;
end;或
procedure TForm1.ADOQuery1cccValidate(Sender: TField); //价格、数量共用
begin
Sender.DataSet.FieldByName('总额').AsFloat :=
Sender.DataSet.FieldByName('价格').AsFloat +
Sender.DataSet.FieldByName('数量').AsFloat;
end;