MS Access Insert In Select Не работает с vba

Я пытаюсь запустить вставку в запрос выбора следующим образом:

Dim rs as new ADODB.recordset
rs.Open "INSERT INTO tempTable(PartNumber, Age, Height, Notes, UpdateType)" & _
        " SELECT PartNumber, Age, Height, Notes, UpdateType FROM TABLE2", CurrentProject.Connection, adOpenStatic, adLockOptimistic

что дает мне ошибку:

Синтаксическая ошибка в инструкции INSERT INTO

Что действительно странно, так это то, что когда я отлаживаю приведенный выше оператор и запускаю запрос из мастера запросов в базе данных Access, он работает нормально.

Мое понимание currentproject.connection заключается в том, что я могу с радостью использовать синтаксис запроса Jet-SQL или MS Access, поэтому, если запрос выполняется в окне запроса в Access, он также должен выполняться в VBA. Похоже, это не так.

Вот еще несколько вещей, которые я пытался запустить:

CurrentProject.Connection.Execute "INSERT INTO tempTable(PartNumber, Age, Height, Notes, UpdateType)" & _
        " SELECT PartNumber, Age, Height, Notes, UpdateType FROM TABLE2"

Это дает ту же ошибку, что и выше.

Я также попытался добавить новую строку vbclrf:

rs.Open "INSERT INTO tempTable(PartNumber, Age, Height, Notes, UpdateType)" & _
        & vbclrf & " SELECT PartNumber, Age, Height, Notes, UpdateType FROM TABLE2", CurrentProject.Connection, adOpenStatic, adLockOptimistic

но это дало мне ту же ошибку

Почему вы дублируете записи в tempTable, а не просто используете запрос?

June7 22.12.2020 05:29

Проверено и скобки не нужны. Что-то еще вызывает сбой Execute. Хотя то, что я вижу, должно работать.

June7 22.12.2020 13:02

Я дублирую записи во временную таблицу, потому что хочу отобразить ее в форме в виде таблицы. Я знаю, что могу использовать запрос и для этого, но я хочу добавить флажок рядом с каждой записью. Я хочу, чтобы значение флажка было любым, даже когда пользователь закрывает форму и возвращается. Поэтому я должен использовать временную таблицу для этого

goxarad784 22.12.2020 16:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
369
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для установки объекта набора записей используются только операторы SELECT. Набор записей не нужен.

INSERT — это действие SQL, поэтому для инструкции, созданной VBA, используйте DoCmd.RunSQL, CurrentDb.Execute или CurrentProject.Connection.Execute.

Мои предпочтения: CurrentDb.Execute "your SQL statement here"

Другие вопросы по теме