2012-07-06 58 views
2

我在SQL Server 2008中有一個數字(26,10)列「x」。當我嘗試使用TADOQuery的FieldByName('x')讀取列值.AsExtended,I出現錯誤「32,7893256547不是有效的BCD值」。32,7893256547不是有效的BCD值

「32,7893256547」是列值之一。

這隻發生在某些電腦上。在這些電腦上,當我將窗口設置「小數點後的位數」更改爲9時,一切正常。

我看到該列被映射到ADOQuery中的TFMTBCDField。

這是BCD轉換/格式化的問題嗎?我該如何解決這個問題?

平臺: Windows 7中的Delphi 2009,SQL Server 2008的

+4

聽起來像你的問題是小數點分隔符 - ','和'.'。 – Eric 2012-07-06 08:41:00

+0

http://qc.embarcadero.com/wc/qcmain.aspx?d=2741 – RBA 2012-07-06 08:42:46

+0

另外,試試這個 - http://docwiki.embarcadero.com/Libraries/en/Data.Win.ADODB.TCustomADODataSet.EnableBCD – RBA 2012-07-06 08:43:54

回答

1

我有同樣的問題,當我試圖用

ADOQuery1.FieldByName('YourField').AsString; 

解決這個:

BCDToStrf(ADOQuery1.FieldByName('YourField').AsBCD,ffFixed,11,3) ; 
1

我開始>控制面板>時鐘,語言和地區>更改日期,時間和數字格式並更改de數字和貨幣從逗號到點或其他方式的cimal點。

對不起,但我在捷克使用Windows,我們有逗號分隔符作爲默認小數點。一些標題被我翻譯成英文,所以他們不需要確切。