Запуск SQL через VBA

Я пытаюсь запустить следующий запрос:

SELECT Project.* FROM Project WHERE (((Projects.[End Date (PPL)])>=DateAdd('m',-6,Date()))); 

Он отлично работает в Access (2007), однако, когда я перехожу к VBA:

 strQry = "SELECT Project.* FROM Project WHERE (((Projects.[End Date (PPL)])>=DateAdd('m',-6,Date())));" 

Я получаю сообщение об ошибке: «Нет значения для одного или нескольких требуемых параметров»

Я могу заставить его работать со следующим кодом, но он не содержит правильной информации:

 strQry = "SELECT Project.* FROM Project WHERE Project.[End Date (PPL)] >= DateAdd('m',-6,Date());" 

Любая помощь будет большой.

Окончательный ответ на ваш вопрос здесь, в StackOverflow:

Функция VBA в запросе Excel ADODB

Короткий ответ:

Вы используете диалект SQL под названием Jet-SQL, и большинство людей называют его из Microsoft Access, приложения базы данных, которое делает возможности VBA доступными для механизма SQL.

Если вы запускаете Jet SQL с любой другой платформы – например, ODBC или ADODB-обертки – функции VBA недоступны: все, что у вас есть, – это родные функции Jet-SQL.

Здесь есть список собственных функций Jet-SQL: он почти завершен, и вы можете видеть, что он довольно короткий:

Доступ MS: функции – список по категориям

… И это не включает NZ ()

Это несколько сбивает с толку, что эти функции выглядят как знакомые VBA – и раздражает, что список веб-страниц с их меткой «MS-Access», а не Jet SQL.

В этом списке есть интересный элемент: встроенная функция «If», IIF() , и вы можете использовать ее в качестве замены для NZ:

 SELECT IIF( table1.[RIC] IS NOT NULL, table1.[RIC], table2.[ISIN] + ', CODE:ISIN' ) AS [RetrievalCode], table3.[Value], table3.[DateStamp] FROM * The rest of your Query *
SELECT IIF( table1.[RIC] IS NOT NULL, table1.[RIC], table2.[ISIN] + ', CODE:ISIN' ) AS [RetrievalCode], table3.[Value], table3.[DateStamp] FROM * The rest of your Query * 

Надеюсь, что это поможет: я подозреваю, что этого не произойдет, потому что вы можете вызвать именованный запрос (или SQL с именованным подзапросом в нем), а все независимые вызовы функций в этих запросах недействительны, если все это не называется из MS-Access.

Вы, конечно, можете сделать запрос «схемы» и извлечь SQL, проанализировать его и заменить все VBA собственными функциями Jet-SQL. Но синтаксис Jet-SQL становится загадочным, когда вы находитесь за пределами его предполагаемой среды – построителя визуальных запросов Query-By-Example внутри Microsoft Access – так что предложение может быть больше времени и проблем, чем делать это по-другому.

Interesting Posts

Формула Excel для сравнения двух столбцов и если найденный совпадение проверяет следующую ячейку на значение и затем возвращает результат

Сочетание мутильных макросов

разделение ячеек ошибок на другой рабочий лист с помощью VBA

Метод Interop Excel LinEst не работает с DISP_E_TYPEMISMATCH

Удаление HTML-символов из загрузки Excel в теги Exact Online

ApachePOI + JAVA + Excel Добавление значений в ячейку не работает

Каков обычный способ написания этого Excel VBA?

В VBA, когда я меняю формат одного столбца, смежный тоже меняется

Подписание надстройки VSTO Excel с таргетингом на .NET Framework 4.0 с использованием сертификата SHA-2

Необходимо объединить данные столбца файла Excel при экспорте из приложения vb.net

экспортировать результаты MATLAB под MATLAB с использованием нескольких циклов на разные листы файла Excel

Как сортировать столбцы excel из Outlook через VBA. Код excutes by не сортирует

Проверка наличия дня рождения человека после определенной даты в Microsoft Excel 2003

Чтение и анализ данных из листов Excel с использованием pywin32

Как получить форматированное значение ячейки дисплея в excel с помощью closedXML?

Давайте будем гением компьютера.