|
|
Base de datos : PwdOpenCurrentDatabase
| Autor/es: Juan M Afán de Ribera | | Pregunta : ¿Cómo puedo, mediante automatización, abrir una instancia de una base de datos que tenga contraseña ? | Respuesta : Si estás trabajando con Access XP o superior sólo tienes que emplear el método Application.OpenCurrentDatabase y en el último de sus argumentos indicarle la contraseña.
Si en cambio, estás trabajando con alguna versión inferior a ésta, deberías emplear un pequeño truco y encapsular el método OpenCurrentDatabase en una función. Aquí tienes ya una hecha llamada PwdOpenCurrentDatabase y que contiene los siguientes | Argumentos | Argumento | Descripción | | bstrPassword | Requerido. Contraseña de la base de datos que se quiere abrir | | FilePath | Requerido. Ruta completa de la base de datos que se quiere abrir | | ErrNumber | Requerido. Variable en la que se almacenará un número de error, en el caso de que la función falle | | Exclusive | Opcional. Abre la base de datos en modo uso exclusivo (True) o en modo uso compartido (False) (valor predeterminado) | | Visible | Opcional. Hace visible la nueva instancia de la base de datos (True) o invisible (False) (valor predeterminado) |
| Si la función tiene éxito, devuelve una varible objeto tipo Access.Application, que apuntará a la instancia de la base de datos que se haya abierto. En caso contrario, devolverá Nothing y el argumento ErrNumber contendrá el número de error que se haya producido
Ejemplo de uso: | ' El siguiente código abre la base "C:\MiBd.mdb" que tiene como contraseña
' "123456", en modo compartido y haciendola visible
'
Sub AbrirBDContraseña()
Dim oApp As Access.Application
Dim NumeroError As Long
Set oApp = PwdOpenCurrentDatabase( _
"123456", _
"c:\MiBd.mdb", _
NumeroError, _
False, _
True)
If oApp Is Nothing Then
MsgBox "Error: " & NumeroError _
& vbCr & Error(NumeroError)
Exit Sub
Else
' aquí tu código
End If
If Not oApp Is Nothing Then oApp.Quit
Set oApp = Nothing
End Sub
| '---------------------------------------------------------
'
' PwdOpenCurrentDatabase
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
' accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function PwdOpenCurrentDatabase( _
bstrPassword As String, _
FilePath As String, _
ErrNumber As Long, _
Optional Exclusive As Boolean, _
Optional Visible As Boolean) _
As Access.Application
Dim db As Object 'DAO.Database
Dim oApp As Access.Application
On Error GoTo err_PwdOpenCurrentdatabase
Set oApp = New Access.Application
Set db = oApp.DBEngine.OpenDatabase( _
FilePath, _
True, False, _
";PWD=" & bstrPassword)
oApp.OpenCurrentDatabase FilePath, Exclusive
oApp.Visible = Visible
Set PwdOpenCurrentDatabase = oApp
ErrNumber = 0
exit_Function:
If Not db Is Nothing Then
db.Close
Set db = Nothing
End If
Set oApp = Nothing
Exit Function
err_PwdOpenCurrentdatabase:
ErrNumber = Err.Number
Set PwdOpenCurrentDatabase = Nothing
Resume exit_Function
End Function
'---------------------------------------------------------
| Ejemplos: | Temas relacionados: PwdTransferDatabase Abrir un objeto Database con contraseña |
|