Dbgrid1连接数据库,库中有3个字段:单价,数量及金额.我在Dbgrid1中输入单价及数量后,金额自动计算.我在Dbgrid1的oncolexit事件中判断当前列是不是数量,如果是则计算金额,第一次计算正常,但是当第二次鼠标从数量所在列退出时系统提示:
"无法为更新定位行,一些值可能已在最后一次读取后已更改."
请问是什么原因呢?
"无法为更新定位行,一些值可能已在最后一次读取后已更改."
请问是什么原因呢?
这种错误是因为你用SQL
更新的后台数据
而前台的表没有及时更新数据
begin
if dbgrid1.SelectedField.FieldName='kcsl' then
{如果单价及数量都不为空,则计算金额}
if (adoquery1.FieldByName('price').AsString<>'') and
(adoquery1.FieldByName('kcsl').asstring<>'') then
begin
adoquery1.Edit;
adoquery1.FieldByName('kcje').AsFloat:=adoquery1.fieldbyname('price').Asfloat
*adoquery1.fieldbyname('kcsl').AsFloat;
adoquery1.Post;
end
else
begin
application.MessageBox('单价及数量必须输入!',
'系统提示',mb_ok+mb_iconinformation);
dbgrid1.SelectedIndex:=7; {单价单元格获得焦点}
end;
end;