У меня есть база данных Access 2007, c:\myDb.accdb
, таблица с именем MASTER_TABLE
, которая связана с таблицей TBL.MASTER_TABLE
в базе данных DB2 с именем PRODUCTION
.Как скопировать связанную таблицу в MS Access 2007 в локальную таблицу с помощью VBA (или C#)?
Когда я открываю MASTER_TABLE
, мне предлагается ввести учетные данные для входа в базу данных PRODUCTION
.
Я написал приложение на C#, которое использует таблицу MASTER_TABLE
, но, конечно, она запрашивает у пользователя логин. Чтобы обойти это, мне нужно скопировать связанную таблицу в существующую локальную таблицу с именем LOCAL_MASTER_TABLE
в myDb.accdb
.
Эта копия должна быть автоматизирована, поэтому имя пользователя/пароль необходимо передавать программным способом, а не поднимать подсказку.
В Access, я попытался следующие, чтобы создать локальную копию, но он не учитывает, если поле индексируется:
DoCmd.TransferDatabase acImport, "ODBC Database", "ODBC; DSN=PRODUCTION; UID=username; PWD=password; LANGUAGE=us_english; Database=PRODUCTION", acTable, "TBL.MASTER_TABLE", "LOCAL_MASTER_TABLE"
Я также попытался это: How to copy a linked table to a local table in Ms Access programmatically?
Но я получаю ошибка 3001: Arguements are of the wrong type, are out of acceptable range, or are in conflict with one another
Я звоню CopySchemaAndData_ADOX
функцию со следующим:
Call CopySchemaAndData_ADOX(TBL.MASTER_TABLE, LOCAL_MASTER_TABLE)
В любом случае, может кто-нибудь подумать о способе сделать это в VBA или, возможно, на C#? Или почему я получаю ошибку в коде, который я пытался использовать?
Спасибо!
Спасибо, но это побуждает меня войти в базу данных ПРОДУКЦИИ. Есть ли способ передать учетные данные? Я сделал это: 'Dim sql As String sql =" SELECT * INTO LOCAL_MASTER_TABLE FROM MASTER_TABLE " CurrentDb.Execute sql'. Кроме того, будет ли он скопирован, если поле проиндексировано или нет? –
Мне нужно избежать приглашения для входа в систему, поэтому я могу автоматизировать это позже. –
Таблицу нужно обновлять два раза в неделю. Обычно для чего-то вроде этого я создаю форму в Access и устанавливаю ее для открытия при открытии БД и помещаю VBA в событие «On_Load». Затем я создаю задачу с планировщиком задач Windows, чтобы открыть файл .accdb в 3 часа ночи или когда-либо. –