MS Access DoCmd.Transferdatabase, когда источник имеет пароль - PullRequest
1 голос
/ 27 марта 2019

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

У меня есть следующий код VBA, который отлично работает, когда БД не защищена паролем:

Private Sub ImportTheData(ByVal dbImport As String)

DoCmd.SetWarnings False 'Turn OFF display alerts

'Import the full activity & comments table from the Import DB to a temporary table
DoCmd.TransferDatabase acImport, "Microsoft Access", dbImport, acTable, "tbl_Activity", "tbl_TempActivity", True
DoCmd.TransferDatabase acImport, "Microsoft Access", dbImport, acTable, "tbl_Comments", "tbl_TempComments", True

'code continues ...

ПоследнийПараметр (storelogin) имеет значение true, но, похоже, невозможно программно установить эти параметры входа (пароль).

Когда я запускаю код, пользователю предлагается ввести пароль (несмотря на SetWarnings= Ложь)Поскольку я импортирую десятки файлов каждый раз, это не жизнеспособное решение.

Есть ли способ программно импортировать таблицы, используя DoCmd.TransferDatabase, когда файл защищен паролем, и если да, то как?

Ответы [ 2 ]

3 голосов
/ 27 марта 2019

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

Public Sub ImportEncr()

    Const dbImport = "D:\DbEncr.accdb"
    Const sPassword = "foobar"

    Dim DB As DAO.Database
    Set DB = DBEngine.OpenDatabase(Name:=dbImport, Options:=False, ReadOnly:=False, Connect:=";PWD=" & sPassword)

    DoCmd.TransferDatabase acImport, "Microsoft Access", dbImport, acTable, "tblEncr", "tblEncr", False

    DB.Close
    Set DB = Nothing

End Sub

StoreLogin применяется к связыванию таблиц из баз данных ODBC.

2 голосов
/ 27 марта 2019

Вы можете использовать SQL и построить оператор SQL и .RunSQL, как я считаю.

Примером SQL может быть

SELECT * into tblIMPORT FROM xyz IN '' '; database=C:\Workspace\Database1.accdb;PWD=test';

Надеюсь, это поможет.

...