我用的是桌面数据库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;
在程序中,在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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货