Быстрый вопрос, предполагая, что у меня есть две базы данных доступа с таблицами с одинаковыми заголовками, как мне добавить данные из DATABASE1_TABLE_A в DATABASE2_TABLE_B с помощью VBA (выполняется из DATABASE1). я попробовал
DoCmd.CopyObject "DATABASE2_DESTINATION", "TABLE_B", acTable, "TABLE_A"
который работает, однако он перезаписывает существующую DATABASE2_TABLE_B, а не добавляет к ней данные. Есть ли другая команда, которая позволяет добавлять данные из одной базы данных доступа в другую без перезаписи существующих данных?
Теоретически я мог бы завершить
DoCmd.TransferDatabase acImport, "Microsoft Access", DATABASE2_DESTINATION", acTable, "TABLE_B", "RANDOM_DB_NAME", False
Затем объедините мою таблицу с переданной таблицей, а затем выполните DoCmd.CopyObject, но похоже, что это очень неэффективный метод решения этой проблемы.
В/Р
Тбх, я не знал, что такой вариант существует. Я был полностью уверен, что создание соединения между двумя базами данных для выполнения SQL. У вас случайно нет хорошего ресурса по использованию SQL между двумя отдельными файлами базы данных?





Если у вас есть две таблицы с одинаковой структурой, вы можете использовать следующий код для выполнения задания.
Sub copyData()
Dim db As database ' add reference to DAO library
Set db = CurrentDb
Dim sSQL As String
Dim dbName As String
dbName = "Path\TargetDB.accdb"
sSQL = "INSERT INTO tblDest IN '" & _
dbName & _
"'SELECT tblData.* FROM tblData;"
db.Execute sSQL
End Sub
Это сработало как шарм! Спасибо, что открыли мне глаза на новый набор навыков, о которых я даже не подозревал. По какой-то причине я думал, что для выполнения SQL-запросов между двумя файлами мне нужно будет создать соединение ODBC и/или установить Microsoft Access Database Engine. У вас случайно нет хорошей ссылки на использование SQL с MS Access? Большое вам спасибо за вашу помощь.
Может быть, этот один поможет. Здесь вы также найдете много хороших статей и советов по Access
Почему бы вам не использовать оператор SQL, например
INSERT INTO tblDest IN 'DB.accdb' SELECT tblSource.* FROM tblSource;