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;
回圈好像只做了一次,因為報錯 不能創建重復的值
uj5u.com熱心網友回復:
單步除錯一下,先看看哪里報錯了。uj5u.com熱心網友回復:
procedure TForm1.Button5Click(Sender: TObject);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;
uj5u.com熱心網友回復:
估計是你的兩個記錄型別賦值后插入資料庫造成的問題。可以再插入前增加showmessage(tmp),查看一下插入的資料是否正確或者放到資料庫里面進行測驗。
uj5u.com熱心網友回復:
procedure TfrmMain.NcaculateClick(Sender: TObject);
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陳述句插入,代碼僅供參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86095.html
標籤:數據庫相關
