最近在做一个程序,要使用update更新access数据库,然后重新打开,以更新显示,但发现进行一次更新不能把有的数据更新到数据库里,所以,我想是不是程序运行的太快数据没有更新到库里,高手都来看压呀,代码如下:for i:=1 to 49 do
begin
with form3.adoquery9 do//更新专用的adoquery
begin
close;
sql.Clear;
SQL.Add('update 后屏过热器热力计算 set sz = '+floattostr(myarray[i])+' where fh = '+quotedstr(myarray1[i]));//更新数据,不用管是什么东西
ExecSQL;
end;
end;
with form3.ADOQuery11 do//显示专用adoquery
begin
close;
open;
end;

解决方案 »

  1.   

    忽然翻到我以前发的这个帖子,这个问题已经发现了原因,感觉不告诉大家一下,就很不负责任.原因是,这个程序的数据更新是由手工输入和计算两部分组成,post手工修改数据,update更新计算修改数据,我在update以前对dbgrid进行了post操作,由于ado是多线程组件,所以,如果post的数据量过大,那么update就有可能还没有等到post完就把按照数据库里的值计算所得的值更新上去了,所以,会出现,表格里手工修改的值已经改掉了,但计算值仍按原值进行计算的情况