Sql VBA excel将nvarchar值转换为int时出错
我创建了一个excel VBA代码来从服务器获取数据。一年多以来,它运行得非常好。然而,不知何故,关于“拒绝姓名(无姓名)”客户的标准之一已经改变。以前,我们习惯于自动为他们分配客户编号,但随着新的更改,系统不会为这些客户分配任何客户编号,而是为他们提供“R/N”代码。因此,现在我在从服务器提取数据时遇到了一些问题。我试图应用我在网上发现的一些“旁路技术”,但它们对我不起作用(谈论CAST)。 如果为数字([CustId]),则将([CustId]转换为int)否则0结束 但它不起作用,我得到了这个错误:“运行时错误”-2147217913(80040e07) [Microsoft][ODBC SQL Server驱动程序][SQL Server]对话失败 将nvarchar值“R/n”转换为数据类型int时。“ 我只需要忽略客户id字段中的“R/N”。请查看下面我的vba代码。 先谢谢你 巴哈Sql VBA excel将nvarchar值转换为int时出错,sql,vba,error-handling,int,Sql,Vba,Error Handling,Int,我创建了一个excel VBA代码来从服务器获取数据。一年多以来,它运行得非常好。然而,不知何故,关于“拒绝姓名(无姓名)”客户的标准之一已经改变。以前,我们习惯于自动为他们分配客户编号,但随着新的更改,系统不会为这些客户分配任何客户编号,而是为他们提供“R/N”代码。因此,现在我在从服务器提取数据时遇到了一些问题。我试图应用我在网上发现的一些“旁路技术”,但它们对我不起作用(谈论CAST)。 如果为数字([CustId]),则将([CustId]转换为int)否则0结束 但它不起作用,我得到了
ISNUMERIC是一个SQL Server函数。您需要的是一个Excel VBA函数来测试custid是否是一个数字。有一个函数ISNumber 使用此代码修复字符串值
If Not IsNumber(custid) Then
Custid = "0"
End If
在从范围文本中分配custid变量后,直接插入此代码。顺便说一句,在原始代码中,您似乎没有在任何地方检索custid。您能告诉我们您实际尝试选择此值的代码吗?是的,我的朋友,我遇到了相同的错误。在代码中,您可以看到“custid=范围(“custid4”)。文本“这是我从数据库中查找客户名称的方法之一。明白了。我修正了答案我喜欢你的想法,但是在sql语句之前没有问题。我的意思是问题不在于输入。但我确实需要在sql语句中使用这种语句。但是我的SQL技巧很糟糕,我不知道必须说明如果数据不是int,请考虑“0”。正如你所说。谢谢你到底是怎么得到这个错误的?在哪条线上?表的结构是什么?
If Not IsNumber(custid) Then
Custid = "0"
End If