有个dbgrid1连接表table1,大致如下:
姓名 语文(yw) 数学(sx) 总分(zf)
张三 80 90 170
李四 90 70 160
------------------------------------------------
现在的问题是这个表在dbgrid中编辑,当输入完yw,sx后怎样实现自动计算总分(zf)呢?
先谢谢了
姓名 语文(yw) 数学(sx) 总分(zf)
张三 80 90 170
李四 90 70 160
------------------------------------------------
现在的问题是这个表在dbgrid中编辑,当输入完yw,sx后怎样实现自动计算总分(zf)呢?
先谢谢了
var
gSum: Double;
begin
with DataSet do
try
//清空AfterPost事件,避免出现AfterPost无限递规
AfterPost := nil;
//开始计算
gSum := FieldByName('yw').AsFloat + FieldByName('SX').AsFloat;
//比较总分是否变化,变了就保存
if Abs(gSum - FieldByName('yw').AsFloat) < 0.0001 then
begin
Edit;
FieldByName('yw').AsFloat := gSum;
Post;
end;
finally
AfterPost := ADOQuery1AfterPost
end;
end;
procedure TForm1.ADOQuery1YWSetText(Sender: TField; const Text: String);
begin
Sender.AsString := Text;
Sender.DataSet.Post;//触发实时计算
end;
其实把计算写到这也可以