2013-04-24 66 views
4

負數我有TADOQuery一個巨大的問題:轉換與TADOQuery

這是我的SQL:

select cast(-10 as number(9)) foo, -10 bar 
    from dual 

相反TBCDField,當你添加了「foo」的領域TIntegerField將被創建的,

procedure TCustomADODataSet.InternalInitFieldDefs; 

    if (F.Type_ = adNumeric) and (F.NumericScale = 0) and 
     (F.Precision < 10) then 
     FieldType := ftInteger; 

功能:

因爲類型在該點變

是不是在這一點上考慮信號:

ftAutoInc, ftInteger: 
     Integer(Buffer^) := lVal; 

tagVariant爲TIntegerField的值是:

(14,32768,0,0,10,10,10,1.4012984643e- 44,4.9406564584e-323,True,10,0.001,4.9406564584e-323,,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A',$ A,$ A,$ A,$ A,$ A,#10,10,10,10,$ A,$ A,$ A,$ A,$ A)

這與TBCDField相同:

(14,32768,0,0,10,10,10,1.4012984643e-44,4.9406564584e-323,真,10,0.001,4.9406564584e-323,$ A,$ A,$ A,$ A ,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A,$ A'',$ A,$ A,$ A,$ A,$ A,#10,10, 10,10,10,$ A,,$ A,$ A,$ A,$ A)

foo值將是10,bar值將是-10。

這是一個錯誤?
有一個WorkAround?
它被修復了嗎?

我測試過使用Microsoft OLEDB提供程序的Oracle和Oracle提供程序的OLEDB。 所有測試已採用Delphi 6

+0

有什麼建議?疑問? – EProgrammerNotFound 2013-04-24 23:02:48

+0

我還沒有任何Oracle數據庫即將嘗試這個。 ;-) – 2013-04-24 23:23:37

+0

@WarrenP :-(ok – EProgrammerNotFound 2013-04-24 23:26:22

回答

0

我不知道如果我理解正確的話做了,但是嘗試了這種方式:

select cast(replace(-10,'-','') as number(9)) foo, -10 bar 
    from dual;