procedure TForm1.Button1Click(Sender: TObject);
var
strApp_AcountSql,strApp_ChargeSql,strSql,register_id:string;
nHouseSize,nHouseCost,nFundQuantity,Fee,Fee2,nBSQuantity:Double;
nLoanSpan,nBsSpan:Integer;
begin
strSql :='select * from APP_ACCOUNTPRO where ACC_DATE >= To_Date(''2009-01-01'',''yyyy-mm-dd'') and ACC_DATE < To_Date(''2009-12-30'',''yyyy-mm-dd'') + 1 And nvl(acc_isbshouse, 0) = 1 AND NVL(ACC_CANCELFLAG,0) <> 2 and register_id=''09014218''';
Query_Open(qrMain,strSql);
strApp_ChargeSql :='select CHRG_TOTAL,mode_code from app_charge c where c.register_id=''%s''';
with qrMain do
begin
First;
while not qrMain.Eof do
begin
register_id := qrMain.FieldByName('register_id').AsString;
nFundQuantity := qrMain.FieldByName('ACC_FUNDQUANTITY').AsFloat*10000;
nLoanSpan := qrMain.FieldByName('ACC_LOANSPAN').AsInteger;
nHouseCost := qrMain.FieldByName('ACC_HOUSECOST').AsInteger;
nHouseSize := qrMain.FieldByName('ACC_HOUSESIZE').AsFloat;
nBSQuantity := qrMain.FieldByName('ACC_BSFUNDQUANTITY').AsFloat*10000;
nBSSpan := qrMain.FieldByName('ACC_BSLOANSPAN').AsInteger;
strApp_ChargeSql:=Format(strApp_ChargeSql,[register_id]);
Query_Open(qyCharge,strApp_ChargeSql);
Fee :=100.88;
Fee:=GetDanbaoFeeFromMode(qyCharge.FieldByName('mode_code').AsString, nBSQuantity, nBSSpan);
Fee2 :=100.88;
Fee2 :=qyCharge.FieldByName('CHRG_TOTAL').AsFloat;
Next;
end;
end;
end;
奇怪的是 调试时 还没有运行到赋值的地方 Fee 和 Fee2 的值就已经是5.5518684497e+250
了,重新赋值也没起作用
從你的代碼看,Fee,Fee2是局部變量,由于這兩個變量沒有實際作用,也就是無意義的代碼。delphi會做出優化,賦值語句就不被執行。如Fee :=100.88; 你在這里設定斷點看看,應該是無效的。