Delphi大神 帮我调试下 为嘛循环不能正常的插入

procedure TfrmMain.NcaculateClick(Sender: TObject);
var
bid1: TBid;
estimate: TEstimate;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from Bid';
ADOQuery1.Open;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('insert into Estimate(CompanyNo,EstimateFactor )'+
'values(:CompanyNo,:EstimateFactor)');
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
bid1.CompanyNo := ADOQuery1.FieldByName('CompanyNo').AsString;
bid1.Quantity := ADOQuery1.FieldByName('Quantity').AsInteger;
bid1.MaterialPrice := ADOQuery1.FieldByName('MaterialPrice').AsInteger;
bid1.Workdayprice := ADOQuery1.FieldByName('Workdayprice').AsInteger;
bid1.Mechanicalprice := ADOQuery1.FieldByName('Mechanicalprice').AsInteger;
bid1.OtherPrice := ADOQuery1.FieldByName('OtherPrice').AsInteger;
bid1.FinishTime := ADOQuery1.FieldByName('FinishTime').AsInteger;
estimate.EstimateFactor := 0.2*bid1.Quantity + 0.3*bid1.MaterialPrice
+ 0.2*bid1.Workdayprice + 0.15*bid1.Mechanicalprice + 0.05*bid1.OtherPrice
+ 0.1*bid1.FinishTime;
estimate.CompanyNo :=bid1.CompanyNo;
ADOQuery2.Parameters.ParamByName('CompanyNo').Value :=bid1.CompanyNo;
ADOQuery2.Parameters.ParamByName('EstimateFactor').Value := estimate.EstimateFactor;
ADOQuery2.ExecSQL;
ADOQuery1.Next;
end;
ADOQuery1.Close;
end;

调试,看while循环有没有进入,再看 赋值和字段类型是否匹配,看看有没有报错信息

ADOQuery2.Append;
......
ADOQuery2.ExecSQL;

调试一下,这个已调试立马见分晓,这样在这里看这个代码,太乱了,看不清晰

不需要用两个ADOQuery,也不需要用循环插入,直接用一条语句就可以了
insert into Estimate(CompanyNo,EstimateFactor ) select CompanyNo,EstimateFactor from Bid