2011-09-27 75 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存在... –

相关问题