2011-09-27 72 views
2

首先對於英文不好的抱歉。vb6 - 針對sql server的NUMERIC和microsoft ole數據庫提供程序

我想使以下查詢:「選擇從tblLote頂部1 NumeroLote其中轉換(數字(12),這份執行)= 28405」

的爲「這份執行」數據被存儲在一個varchar字段,有時記錄爲「002008」或「2008」...這就是爲什麼我試圖使用數字。

它適用於sql server 2008,但是當我使用Provider =「sqloledb」和Microsoft ActiveX Data Objects 2.0庫在vb6中使用它時,出現以下錯誤:「數字不是可識別的函數名稱Microsoft Ole Db提供程序爲sql服務器「。

你知道一些替代方案,我只能想到使用「喜歡」。

編輯:也許這份執行VARCHAR是(12)

答:BIGINT

謝謝你這麼多的時間!

+0

嘗試'CONVERT(DECIMAL(12,0),DocumentNo)= ... ' – wqw

+0

得到相同的消息十進制不是一個可識別的函數名稱。 :( –

+0

這一切都提出了「爲什麼isn; t數據庫列輸入正確?」的問題... ... – Deanna

回答

3

The data for "Documento" is stored on a varchar field and sometimes is recorded as "002008" or "2008"... That's why I was trying to use numeric.

數字總是一個整數嗎?如果是這樣,請嘗試使用這個:

CONVERT(INT, Documento) 

編輯:使用BIGINT避免溢出問題:

CONVERT(BIGINT, Documento) 
+0

它的varchar(12),所以它不會與整數工作我已更新問題:( –

+0

如何你的意思是,它不會工作?因爲值不匹配?或者整數不夠大? –

+0

整數不夠大:varchar值'03400110858'的轉換溢出int列,最大值它的關閉因爲INT存在... –

相關問題