2015-12-17 5 views
1

Я пытаюсь вытащить zipcodes из базы данных Microsoft SQL, и все работает хорошо с US Zipcodes, но как только я начну использовать канадские Zip-коды, я получаю следующее сообщение:ошибка преобразования типа данных varchar в int - Excel VBA SQL

преобразование не удалось при преобразовании значения varchar 'L0S1J0' в тип данных int.

Я знаю, что L0S1J0 не является целым числом, но я не понимаю, почему Excel VBA хочет вытащить данные в виде целого числа. Я попытался найти данные, отличные от int, но мне не повезло с правильными ключевыми словами. Я пробовал такие вещи, как Cast и Convert, но я не могу получить что-нибудь для работы, кроме удаления канадских Zip-кодов из базы данных.

Вот мой запрос, который я сейчас выполняю, и Zip-коды хранятся в поле LookupID.

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

Любая помощь в этом очень ценится!

+0

Как выглядит остальная часть вашего VBA? – shawnt00

+0

Это все еще выдало мне сообщение об ошибке. Спасибо за вашу помощь однако :-) –

+0

Я заметил недостающие кавычки, но я ожидал, что вы увидите другую ошибку. Рад, что вы его исправили. – shawnt00

ответ

4

Ваша проблема в вашем предложении where. Перейдите к:

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

Вам нужно поставить одинарные кавычки вокруг строковых литералов.

Вам следует рассмотреть возможность создания параметризованного запроса для защиты от проблем с SQL-инъекциями. Например, с помощью ADO используйте метод CreateParameter.

+0

Pefect! Спасибо за ваше время. Сейчас работает как шарм: -D –