оператор select содержит зарезервированное слово или имя аргумента, которое написано с ошибкой или отсутствует, или неправильно расставлена пунктуация — VBA Excel

#excel #vba

Вопрос:

 strQuery1 = "SELECT 'Health Start Lite' AS HSL_RAW_ProductName, Max(HSL_RAW.[DateCreated]) AS MaxOfDateCreated," amp; _
"HSL_RAW.[Premium], Last(HSL_RAW.[FirstName]) AS LastOfFirstName, HSL_RAW.[LastName]," amp; _
"HSL_RAW.[EmailAddress], HSL_RAW.[MobileNumber], HSL_RAW.[Partner], Last(HSL_RAW.[Stage]) AS LastOfStage" amp; _
"FROM ...
 

Комментарии:

1. Какая строка VBA выдает ошибку? Дело не в этом, это просто текст SQL, который вызывает ошибку. Кроме того, какую версию ADO, ODBC и SQL Server вы используете? Я подозреваю, что это Last(..) функция, которую ваш драйвер ODBC/ADO может не распознать. Вероятно, вам потребуется либо перевести ваше соединение в режим passthru, либо вместо этого использовать хранимую процедуру.

2. ‘Откройте набор записей. rs.Откройте strQuery1, con

3. Хорошо, это определенно Last(..) функция, которая, по моему мнению, вообще недопустима в SQL Server. Вы можете попробовать TOP (1) или подзапрос/CTE, который использует ROW_NUMBER().

4. Я попробую подождать. Спасибо 🙂

5. Попробуйте заменить его LAST_VALUE(..) ORDER BY (..) функцией.

Ответ №1:

Между и отсутствует пробел LastOfStage FROM . Должно быть:

  "... AS LastOfStage" amp; _
 " FROM ..."
 

Обратите внимание на пробел перед FROM .

Комментарии:

1. Ничего себе, я этого не заметил! Большое вам спасибо 😀