我有两个表
录入表  ypmc(名称),sl(数量)
库存表  ypmc(关键字),kcsl(库存数量)
我使用批量更新表
录入表不会出问题,但是录入记录2条以上的时候
库存表中就只更新最后一项,循环没有作用。
 adotable1和adoquery1
都设置批量更新,cachesize 900procedure TYPRK.TableRefresh(Sender:TObject);
var s:string;
    i:integer;
begin
adotable1.Active:=true;
adotable1.First;
i:=0;
while i<=adotable1.RecordCount-1 do
begin
s:=adotable1.FieldByName('ypmc').AsString;
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from kc');
SQL.Add('where ypmc='''+s+'''');
open;
if adoquery1.RecordCount=1 then
begin
adotable1.Open;
edit;                 //&ETH;&THORN;&cedil;&Auml;
FieldByName('kcsl').Value:=FieldByName('kcsl').Value+adotable1.FieldByName('sl').Value;
adoquery1.Post;
adotable1.close;
end
else
begin
adotable1.Open;
append;   //&Ocirc;&ouml;&frac14;&Oacute;
FieldByName('ypmc').AsString:=adotable1.FieldByName('ypmc').AsString;
fieldBYname('guige').AsString:=adotable1.FieldByName('guige').AsString;
fieldbyname('dw').AsString:=adotable1.FieldByName('dw').AsString;
fieldbyname('lsj').AsString:=adotable1.FieldByName('lsj').AsString;
FieldByName('kcsl').Value:=adotable1.FieldByName('sl').Value;
adoquery1.Post;
adotable1.close;
end;
end;
adotable1.Open;
adotable1.Next;
i:=i+1;
end;
adoquery1.UpdateBatch(arall);
end;