2016-01-11 4 views
2

Я пытаюсь получить результирующий набор из базы данных MS Access с помощью VBA для Excel. В коде VBA, я построил строку, равную:Excel VBA, ошибка синтаксиса (отсутствующий оператор) в выражении запроса

strSql = "SELECT * FROM Pricing WHERE Account In (''1234'', ''ABCD'') '; " 

Обратите внимание, что есть 2 одинарные кавычки вокруг строк в заявлении SQL. Существует также одна цитата перед точкой с запятой. Если я не ошибаюсь, это оценивается как:

SELECT * FROM Pricing WHERE Account In ('1234', 'ABCD') ;

Этот запрос отлично работает при запуске непосредственно в MS Access. Однако в Excel VBA, я получаю ошибку времени выполнения:

Syntax error (missing operator) in query expression 'Account In (''1234'', ''ABCD'') '; '

Обратите внимание, что эта ошибка фактически отрезать первую половину заявления SQL.

Я пробовал несколько вариантов, используя двойные кавычки, двойные кавычки, без кавычек, и т.д. и т.п.

Любые советы?

Спасибо.

+2

Там, кажется, маркированное соответствием цитаты прямо перед вашей запятой что делать, если вы удалите что что произойдет, если вы сделаете statemen.? t '" SELECT * FROM Цена WHERE Account In ('1234', 'ABCD'); ''? – Monkpit

+2

Добавьте 'Debug.Print strSql', запустите код и посмотрите, что он показывает вам в окне Immediate. – HansUp

+0

@HansUp Это действительно то, что решило это для меня. По общему признанию, я довольно плохо разбираюсь в Excel VBA. Благодаря! –

ответ

3

В Excel VBA идентификатор строки является "(двойные кавычки) символ Вам не нужно удваивать одинарные кавычки для них, чтобы пройти через базу данных. ., когда заключен в двойных кавычках

Попробуйте это:

strSql = "SELECT * FROM Pricing WHERE Account In ('1234', 'ABCD')" 
+0

Это работает, если он также включает в себя полуточку в конце. –

-1

Пожалуйста, попробуйте с этим:

strSql = "SELECT * FROM Pricing WHERE Account In ('1234', 'ABCD')" 
+0

Пожалуйста, не оставляйте ответы только на код. Они бесполезны для будущих посетителей. – Sumurai8

+0

Кодовые ответы вряд ли помогут будущим посетителям. Пожалуйста, подумайте над тем, чтобы расширить свой ответ, включив объяснение относительно того, что вы изменили, и почему этот ваш код работает. – Magisch

+0

Спасибо за этот намек. Я сделаю это в будущем. – etalon11

Смежные вопросы