将数据类型varchar转换为int时出错 - Excel VBA SQL

时间:2015-12-17 16:06:07

标签: sql-server excel vba excel-vba

我正在尝试从Microsoft SQL数据库中提取zipcodes,并且一切都适用于美国邮政编码,但是一旦我开始使用加拿大邮政编码,我收到以下消息:

转换varchar值时,

转换失败' L0S1J0&#39>数据类型int。

我知道L0S1J0不是整数,但我不明白为什么Excel VBA想要将数据拉为整数。我尝试用int以外的方式搜索数据,但我对正确的关键字没有任何好运。我尝试过像Cast和Convert这样的东西,但除了从数据库中删除加拿大邮政编码外,我无法得到任何工作。

以下是我当前正在运行的查询,Zip代码存储在LookupID字段下。

Select Distance1, Distance2, LookupID FROM excel.dbo.miles WHERE LookupID =" & Worksheets("sheet1").Range("C2").Value

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

您的问题出在您的where子句中。改为:

WHERE LookupID ='" & Worksheets("sheet1").Range("C2").Value & "'"

你需要在字符串文字周围添加单引号。

您应该考虑执行参数化查询以防止SQL注入问题。例如,使用ADO使用CreateParameter方法。