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;循环好像只做了一次,因为报错 不能创建重复的值
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;循环好像只做了一次,因为报错 不能创建重复的值
var
bid1: TBid;
estimate: TEstimate;
sqlstr, tmp : string;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from Bid';
ADOQuery1.Open;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
sqlstr := 'insert into Estimate(CompanyNo,EstimateFactor ) values(''%s'', ''%s'')'; 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; tmp := Format(sqlstr, [bid1.CompanyNo, estimate.EstimateFactor]);
ADOQuery2.sqlstr.Text = tmp ;
try
ADOQuery2.ExecSQL;
except
////调试加入报错提示
end;
ADOQuery1.Next;
end;
ADOQuery1.Close;
可以再插入前增加showmessage(tmp),查看一下插入的数据是否正确或者放到数据库里面进行测试。
var SQL,S1,S2,S3,ID,ID1:string;
L:integer;
begin
DateTimetoString(ID,'yymmddhhnnss',now);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from Bid';
ADOQuery1.Open;
ADOQuery2.Close;
L:=100
while not ADOQuery1.Eof do
begin
ID1:=ID+IntToStr(L);
S1 := ADOQuery1.FieldByName('CompanyNo').AsString;
S2 := ADOQuery1.FieldByName('Quantity').AsInteger;
S3 := ADOQuery1.FieldByName('MaterialPrice').AsInteger;
SQL:='INSERT INTO 表名 (字段1,字段2,字段3,ID) '+
' VALUES('+#39+S1+#39+','+#39+S2+#39+','+#39+S3+#39+','+#39+ID1+#39+')';
ADOQuery2.SQL.Text:=SQL;
ADOQuery2.ExecSQL;
ADOQuery1.Next;
L:=L+1;
end;
ADOQuery1.Close;
end;
建议使用SQL语句插入,代码仅供参考。