Я пытаюсь запустить вставку в запрос выбора следующим образом:
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
но это дало мне ту же ошибку
Проверено и скобки не нужны. Что-то еще вызывает сбой Execute. Хотя то, что я вижу, должно работать.
Я дублирую записи во временную таблицу, потому что хочу отобразить ее в форме в виде таблицы. Я знаю, что могу использовать запрос и для этого, но я хочу добавить флажок рядом с каждой записью. Я хочу, чтобы значение флажка было любым, даже когда пользователь закрывает форму и возвращается. Поэтому я должен использовать временную таблицу для этого
Для установки объекта набора записей используются только операторы SELECT. Набор записей не нужен.
INSERT — это действие SQL, поэтому для инструкции, созданной VBA, используйте DoCmd.RunSQL, CurrentDb.Execute или CurrentProject.Connection.Execute.
Мои предпочтения: CurrentDb.Execute "your SQL statement here"
Почему вы дублируете записи в tempTable, а не просто используете запрос?