1、如果是单一条数据求金额,可以:
(1)在SQL语句插入数据前,计算金额,再Insert;
(2)原有的数据行,Undata前,计算一下金额,再UpData;
2、如果是娄条数据求金额,可以:
通过while Not Eof do失循环语句中,先计算好金额,再UpData;
在datasource的onUpdateData和grideh的onColExit下加入。
with grid_E_sub do
begin
if not (q_e_sub.State in [dsInsert, dsEdit]) then q_e_sub.Edit;
field_name:=UpperCase(SelectedField.FieldName);
if (field_name='T_PRICE') then //改动结算价格
begin
Fields[FieldColumns['t_sums'].index].AsVariant:=Fields[FieldColumns['nums'].index].AsVariant*Fields[FieldColumns['t_price'].index].AsVariant;
end;
end;
grid_e_sub就是你的dbgrideh,q_e_sub就是adoquery,
在grid_esub的datasource控件的onUpdateData事件上加上下面的代码
with grid_E_sub do
begin
if not (q_e_sub.State in [dsInsert, dsEdit]) then q_e_sub.Edit;
field_name:=UpperCase(SelectedField.FieldName);
if (field_name='T_PRICE') then //T_price为价格
begin
Fields[FieldColumns['t_sums'].index].AsVariant:=Fields[FieldColumns['nums'].index].AsVariant*Fields[FieldColumns['t_price'].index].AsVariant;
end;
if (field_name='nums') then //nums为价格 t_sums为金额字段
begin
Fields[FieldColumns['t_sums'].index].AsVariant:=Fields[FieldColumns['nums'].index].AsVariant*Fields[FieldColumns['t_price'].index].AsVariant;
end;
end;
grid_e_sub控件的onColExit事件中也填上上面的代码,就可以了。