我有一个计算字段'余额'显示两个数据集字段之间的余额金额,我用下一个代码来计算它的值:
var
Balance : Currency;
...
procedure TMyForm.MyQueryCalcFields(DataSet: TDataSet);
begin
if MyQuery.FieldByName('MyFirst Field').AsCurrency > 0 then
Balance := Balance+MyQuery.FieldByName('MyFirst Field').AsCurrency;
if MyQuery.FieldByName('MySecond Field').AsCurrency > 0 then
Balance := Balance-MyQuery.FieldByName('MySecond Field').AsCurrency;
MyQuery.FieldByName('Balance').AsCurrency := Balance;
end;
并且我使用TDBGrid
来显示我的查询结果,dbgrid显示正确的值,直到我开始滚动它的垂直滚动条,在本例中它显示错误的值。
我尝试将“0”分配给余额,但结果相同(开始滚动时的值错误)。
如何使dbgrid保持显示正确的值?
1条答案
按热度按时间js81xvg61#
OnCalcField
事件处理程序是为仅依赖于当前记录值的计算而设计的。如果您使用的数据集类允许这样做,我建议您在加载数据后立即计算一次balance字段,例如: