我用的是桌面数据库ACCESS,控件是QUERY+DATASOURCE+DBGRID
在程序中,在DBGRID中输入数据时,输完一条记录,按方向键“下”添加一条记的记录时系统提示“无法为更新行集定位:一些值可能已在最后读取后改变。”,我束手无策。
而且不是输入每条记录都这样提示。有的记录正常,有的不正常。QUERY更新之后触发的事件:
procedure Tfr_dj.Query1AfterPost(DataSet: TDataSet);
{功能:自动计算当前记录以下所有记录的余额值
       本条记录余额:=上条记录的余额+本条记录借方-本条记录贷方
}
var
  y:single;
  i:integer;
  t:integer;
begin
  if dbgrideh1.Col in[4..6] then
  begin
    with query2 do
    begin
      SQL.Clear;
      SQL.Add(query1.SQL.Text);
      Close;
      Open;
      if eof=true then
        exit;
      RecNo:=1;
      y:=Fields[6].AsFloat;
      for i:=2 to RecordCount do
      begin
        RecNo:=i;
        Edit;
        Fields[6].AsFloat:=y+Fields[4].asfloat-Fields[5].AsFloat;
        Post;
        y:=Fields[6].AsFloat;
      end;
    end;
  t:=query1.RecNo;
  query1.Close;
  query1.Open;
  query1.RecNo:=t;
  end;
end;