Microsoft KB Archive/304915

= ACC2000: How to Change the Database Password Through ADO =

Article ID: 304915

Article Last Modified on 6/29/2004

-

APPLIES TO


 * Microsoft Access 2000 Standard Edition

-



This article was previously published under Q304915



Advanced: Requires expert coding, interoperability, and multiuser skills.

This article applies only to a Microsoft Access database (.mdb).



SUMMARY
With Microsoft Jet version 4.0, you can change the database password by running a data-definition query. Because you can do this, it is relatively easy to set the database password through ActiveX Data Objects (ADO).

This article shows you how to set the database password, and then how to resetting the database password to a blank password.

NOTE: To set or reset the database password, you must have the database open exclusively.



Setting the Database Password
The following ADO example assumes that the current database has a blank database password.

NOTE: The sample code in this article uses Microsoft ActiveX Data Objects. For this code to run properly, you must reference the Microsoft ActiveX Data Objects 2.x Library (where 2.x is 2.1 or later.) To do so, click References on the Tools menu in the Visual Basic Editor, and make sure that the Microsoft ActiveX Data Objects 2.x Library check box is selected.

  Create a module, and then type the following line in the Declarations section if it is not already there: Option Explicit   Type the following procedure: Sub ADOAddPW Dim cn As ADODB.Connection Dim newpassword As String Dim NotValid As Integer Dim sqlExecStr As String

Set cn = CurrentProject.Connection On Error Resume Next

' Test to see if the database is open exclusively. If cn.Mode <> 12 Then MsgBox &quot;Your database is not opened exclusively&quot;, vbCritical Exit Sub End If RetryPassword: newpassword = InputBox(&quot;Please enter new database password&quot;, &quot;Database Password&quot; _      , &quot;New Database Password&quot;)

' Select case for inputbox. Select Case newpassword ' Case where the cancel button was pressed. Case &quot;New Database Password&quot; MsgBox &quot;No Database password set&quot; Exit Sub ' Case where the OK button was pressed without entering data. Case &quot;&quot; NotValid = MsgBox(&quot;You have not entered a valid password, or clicked the cancel button&quot; & Chr(10) & Chr(13) & _      &quot;Do you want to change the database password?&quot;, vbCritical + vbYesNo) If NotValid = 6 Then GoTo RetryPassword Else Exit Sub End If   'If any data is entered other than the default value. Case Else sqlExecStr = &quot;ALTER Database Password &quot; & newpassword & &quot;``&quot; CurrentProject.Connection.Execute sqlExecStr MsgBox &quot;Database password has been set&quot; End Select End Sub

 To test this function, click Run Sub/UserForm on the Run menu. Close and then reopen the database. Note that you are prompted to enter the database password.

Resetting the Database Password to a Blank Password
You can use the following code sample to reset the password to a blank database password. To set the blank password, you must use the grave accent character (`) instead of the apostrophe (') character. This example also assumes that the current database has a database password set as DBPassword.

  Create a module, and then type the following line in the Declarations section if it is not already there: Option Explicit </li>  Type the following procedure: Sub ResetDBPassword Dim cn As ADODB.Connection Dim sqlExecStr As String Dim ResetQuestion As Integer Set cn = CurrentProject.Connection On Error Resume Next ' Test to see if the database is open exclusively. If cn.Mode <> 12 Then MsgBox &quot;Your database is not opened exclusively&quot;, vbCritical Exit Sub End If  ResetQuestion = MsgBox(&quot;You have selected to reset the database&quot; & _            Chr(10) & Chr(13) & &quot;to a blank password. Do you want to continue?&quot;, vbQuestion + vbYesNo, _            &quot;Reset Database Password&quot;)

'Reset database password based on answer to message box. If ResetQuestion = 6 Then sqlExecStr = &quot;ALTER DATABASE PASSWORD `` DBPassword&quot; CurrentProject.Connection.Execute sqlExecStr MsgBox &quot;Database Password has been reset.&quot; Else MsgBox &quot;Database password has not been reset&quot; Exit Sub End If

End Sub </li> To test this function, click Run Sub/UserForm on the Run menu.</li> Close and then reopen the database. Note that you are not prompted to enter the old database password.</li></ol>

<div class="references_section">