Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql VBA excel将nvarchar值转换为int时出错_Sql_Vba_Error Handling_Int - Fatal编程技术网

Sql VBA excel将nvarchar值转换为int时出错

Sql VBA excel将nvarchar值转换为int时出错,sql,vba,error-handling,int,Sql,Vba,Error Handling,Int,我创建了一个excel VBA代码来从服务器获取数据。一年多以来,它运行得非常好。然而,不知何故,关于“拒绝姓名(无姓名)”客户的标准之一已经改变。以前,我们习惯于自动为他们分配客户编号,但随着新的更改,系统不会为这些客户分配任何客户编号,而是为他们提供“R/N”代码。因此,现在我在从服务器提取数据时遇到了一些问题。我试图应用我在网上发现的一些“旁路技术”,但它们对我不起作用(谈论CAST)。 如果为数字([CustId]),则将([CustId]转换为int)否则0结束 但它不起作用,我得到了

我创建了一个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代码。 先谢谢你 巴哈


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