В моей базе данных Access есть несколько таблиц SQL-сервера, связанных с ODBC, которые являются производственной средой. Для тестирования я хочу скопировать все данные с SQL-сервера в идентичные по структуре таблицы Access, чтобы у меня был идентичный набор таблиц в среде разработки или тестирования. Чтобы сделать это трудным: все эти таблицы имеют идентификаторы автоинкремента, и я хочу, чтобы копии имели те же значения и, конечно, копируемое поле идентификатора также как и автоинкремент long.
Итак, набор этих таблиц:
- dbo_tbl_Abcd
- dbo_tbl_Efgh и т. д.
следует скопировать в:
- Dev_Abcd
- Dev_Efgh и т. д.
или в:
- Test_Abcd
- Test_Efgh и т. Д.
Когда я делаю ручное копирование и вставку для каждой таблицы, это будет работать без проблем. Появится диалоговое окно «Вставить таблицу как», где у вас есть опции:
Связанная таблица
Только структура
Структура и данные
Добавить данные в существующую таблицу
Когда вы установитеправильное имя и выберите Структура и данные, у вас будет правильная копия таблицы доступа с такими же значениями в поле Auto-ID. Я просто хочу сделать это по коду и для всех ODBC-таблиц одновременно (в цикле). Когда Access обеспечивает это ручное копирование, должен быть способ сделать это с помощью кода.
Я уже пробовал это:
DoCmd.CopyObject , "Dev_Abcd", acTable, "dbo_tbl_Abcd"
, но это только создаст больше ODBC-ссылок нате же таблицы SQL-сервера. Я также попробовал это:
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentDb.Name, acTable, "dbo_tbl_Abcd", "Dev_Abcd"
Это привело к следующей ошибке:
Механизм базы данных Microsoft Access не смог найти объект. Убедитесь, что объект существует, и что вы правильно написали его имя и путь. (Ошибка 3011)
Я много экспериментировал с DoCmd.TransferDatabase, но мне не удалось найти рабочую настройку.
Я не проверял никаких «SELECT INTO» -Statements из-заполе автоинкремента.