Можно ли использовать VBA для изменения текущего пароля к базе данных accdb / e? - PullRequest
3 голосов
/ 23 февраля 2012

У меня есть личное приложение БД, которое изначально было разработано с использованием формата mdb в Access 2007. По соображениям безопасности я преобразовал его в .accdb.Все функции преобразуются нормально, кроме функции смены пароля БД.Эта функция выполняется в VBA, потому что в Db все панели инструментов отключены.В формате mdb ... это прекрасно работает

DBPath = [CurrentProject].[FullName]

' Create connection string by using current password.
strOpenPwd = ";pwd=" & OldPswd

' Open database for exclusive access by using current password. To get
' exclusive access, you must set the Options argument to True.
Set dbsDB = OpenDatabase(Name:=DBPath, _
                         Options:=True, _
                         ReadOnly:=False, _
                         Connect:=strOpenPwd)

' Set or change password.
With dbsDB
    .NewPassword OldPswd, Pswd2
    .Close
End With

Me.DB_Pswd = Pswd2

Set dbsDB = Nothing

На этом форуме я нашел кое-что, что близко подходит для .accdb, но работает только для другого файла .accdb, а не для текущего проекта ....

strAlterPassword = "ALTER DATABASE PASSWORD [" & NwPswd& "] [" & OldPswd & "];"

Set ADO_Cnnct = New adodb.Connection
With ADO_Cnnct
    .Mode = adModeShareExclusive

    .Provider = "Microsoft.ACE.OLEDB.12.0"
    '  Use old password to establish connection
    .Properties("Jet OLEDB:Database Password") = OldPswd

    'name  current DB

    DBPath = [CurrentProject].[FullName]  <- this does not work: get a file already in use error

    .Open "Data Source= " & DBPath & ";"
    ' Execute the SQL statement to change the password.
    .Execute (strAlterPassword)
End With

'Clean up objects.
ADO_Cnnct.Close
Set ADO_Cnnct = Nothing

Так есть ли способ сделать это в VBA для файлов .accdb?В основном это будет автоматизировать функцию панели инструментов первого Decrypt и шифровать с новым паролем.Я знаю, что панель инструментов может сделать это, поэтому я знаю, что должен быть способ VBA сделать это.

1 Ответ

0 голосов
/ 29 июня 2012

Я нашел решение для этого или, может быть, просто обойти.При удалении библиотеки ADO первый метод будет работать для файлов формата .Accde.Он не будет работать с файлом формата .accdb, но вы все равно не хотите его распространять.

...