Conectar a una base de datos de Access que esta cifrada con contraseña..

Tengo una base de datos de Access dividida y necesito el código utilizando VBA. Para poder leer las tablas y controlar los usuario. El problema es que tengo un código VBA que me funciona perfectamente pero es sin cifrar la base de datos pero cuando la abro en forma exclusiva y le pongo contraseña el código para manipular las tablas me dice que el archivo no es valido. Les voy a dejar el código que estoy utilizando para que por favor verifiques que esta sucediendo.

Por favor quien me pueda ayudar le agradezco. Gracias

Dim strMyExternalDatabase
Dim dbs As DAO.Database
Dim dbsExt As DAO.Database
Dim rst As DAO.Recordset
Dim tdf As DAO.TableDef
Dim Data, ver As Variant
Set dbs = CurrentDb()
Set tdf = dbs.TableDefs("Usuarios")
'ver = "c:\prueba\siscodemi.accdb"
'[PWD=password;] [DATABASE=database;]
strMyExternalDatabase = Mid(tdf.Connect, 11)
'Open the database that contains the table that is linked
Set dbsExt = OpenDatabase(strMyExternalDatabase)
'Open a table-type recordset against the external table
Set rst = dbsExt.OpenRecordset("Usuarios", dbOpenTable)
Data = [usuario]
'Specify which index to search on
rst.Index = "PrimaryKey"
'Specify the criteria
rst.Seek "=", Data
If rst.NoMatch Then
MsgBox "Este usuario no existe"

1 respuesta

Respuesta

Si está utilizando una base de datos de Access dividida con contraseña y necesita acceder a las tablas en el archivo de datos en forma exclusiva, puede hacerlo utilizando el siguiente código VBA:

Dim strMyExternalDatabase As String
Dim dbs As DAO.Database
Dim dbsExt As DAO.Database
Dim rst As DAO.Recordset
Dim tdf As DAO.TableDef
Dim Data As Variant
Set dbs = CurrentDb()
Set tdf = dbs.TableDefs("Usuarios")
strMyExternalDatabase = Mid(tdf.Connect, 11)
' Abre la base de datos externa con contraseña
Set dbsExt = OpenDatabase(strMyExternalDatabase, False, False, ";PWD=contraseña")
' Abre un recordset contra la tabla externa
Set rst = dbsExt.OpenRecordset("Usuarios", dbOpenTable)
Data = [usuario]
' Especifica el índice en el que buscar
rst.Index = "PrimaryKey"
' Especifica el criterio de búsqueda
rst.Seek "=", Data
If rst.NoMatch Then
    MsgBox "Este usuario no existe"
End If
' Cierra los objetos recordset y base de datos
rst.Close
Set rst = Nothing
dbsExt.Close
Set dbsExt = Nothing

En este código, se utiliza la función OpenDatabase para abrir la base de datos externa con la contraseña proporcionada. El parámetro False indica que la base de datos debe abrirse en modo exclusivo. Asegúrese de reemplazar "contraseña" con la contraseña real de tu base de datos.

Luego, se abre un recordset contra la tabla externa "Usuarios" y se realiza la búsqueda utilizando el índice y el criterio especificados.

No olvide cerrar y liberar los objetos recordset y base de datos al finalizar el código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas