Access 2010: Problema al compactar la BD

:)

Hola a todos:

Desde el ambiente VBA abro y manipulo una bd con lo siguiente:

Set Conn = CreateObject("adodb.Connection")
With Conn
  .Provider = "Microsoft.ACE.OLEDB.12.0"
  .Properties("Data Source") = "C:\Carpeta\Database1.accdb"
  .Properties("Jet OLEDB:Database Password") = "pwd"
  .Open
End With

Esto funciona sin inconvenientes hasta que compacto la bd (manualmente o por programa).

En cualquiera de los casos, tras compactarla e intentar abrirla, obtengo el mensaje:

- No es una contraseña válida.

Si bien puedo acceder a los datos "bajando" la versión de la BD a Access 2002-2003 pregunto: ¿Hay otra forma de solucionar esto quedándome en la versión 2007-2010?...
Saludos y gracias.

Mario R.

:)

1 respuesta

Respuesta
1

Prueba con Application

    Application.DBEngine.CompactDatabase "C:\Temp\Bdatos.mdb", "C:\Temp\BdatosNueva.mdb", , , ";pwd=contraseña"

:)

Gracias, Jesús, por tu respuesta. Mira:

- Lo que propones (Application.DBEngine.CompactDatabase) conduce al mismo problema (mensaje "No es una contraseña válida").

- Nota un detalle no menor: en tu ejemplo utilizas una BD anterior a la versión Access 2007 (mdb)... ¡Y ése es -precisamente- mi problema! O sea: estoy trabajando con Access 2010 (extensión "accdb").

¿Crees que para acceder mediante "adodb" a bases de datos Access con contraseñas habría que utilizar versiones 2003 o anteriores?...

Saludos, Mario R.

.

:)

Lo acabo de probar con una accdb y funciona igual.

Te está diciendo que el problema es la contraseña, tienes que pasársela en el formato pedido:

";pwd=contraseña"

el ; tiene que estar, por cierto, aunque sea un literal va sin comillas

:)

Después de compactar la bd: ¿Intentaste abrir el archivo resultante con el método comentado?... Esto es:

Set Conn = CreateObject("adodb.Connection")
With Conn
  .Provider = "Microsoft.ACE.OLEDB.12.0"
  .Properties("Data Source") = "C:\Carpeta\Database1.accdb"
  .Properties("Jet OLEDB:Database Password") = "pwd"
  .Open
End With

¿Te funciona? (porque ése es mi problema)...

:)

.

Mil perdones (o más), no entendí bien tu pregunta.

La cuestión es que yo no uso ese método para acceder externamente a una BD de Access, si quiero acceder a sus tablas declaro una DataBase, si quiero acceder a sus formularios / informes, etc uso automatización.

Si quieres seguir por ese camino, espero que otro forero te pueda echar un cable, si quieres explorar otras vías, dime que es lo que pretendes hacer una vez abierta la BD.

:)

Me parece, Jesús, que el problema... "viene de otro lado". Te comento lo siguiente:
- Con Access 2010 creo una base de datos (BD) con una tabla y un registro.
- A la BD le pongo una contraseña y la cierro.
- Me voy a Excel y trato de establecer conexión con la BD mediante MS Query o mediante "Importar MS Access".
En cualquier caso: ¡Me está rebotando la conexión porque no reconoce la contraseña!...
- En cambio si la BD es versión Access 2002-2003 (también con contraseña) no tengo ningún problema.
- Naturalmente si a las BD's no les pongo contraseñas (sin importar la versión de Access): ¡Cero problema!
¿Te pasa algo como esto (te lo pregunto puesto que a un amigo también le pasa lo mismo por lo que no se trataría de un problema de la instalación sino de las características del cifrado a partir del Access 2007)?...

:)

.

No suelo usar ADO si no tengo más remedio ... :-)

En este caso,

- Excel leyendo una tabla de Access: usa DAO que es el nativo de Access.

Macro en Excel:

Private Sub ImportarDatos()
Dim DB As DAO.database, Rs As DAO.Recordset
    Set DB = DBEngine.Workspaces(0).OpenDatabase("C:\Temp\BDatos.accdb", False, False, ";pwd=contraseña")
    Set Rs = DB.OpenRecordset("SELECT * FROM Permisos", dbOpenForwardOnly)
    ActiveSheet.Range("A1").CopyFromRecordset Rs
    Rs.Close
    DB.Close
End Sub

No se te olvide incluir la referencia al acceso a datos:

:)

En verdad, Jesús, agradezco sobremanera todos tus esfuerzos para encontrar "la quinta pata al gato".

Ya probé esto último y, en rigor, equivale a lo que comentaba en mi primer mensaje. Esto es:

- Mientras no compactas la BD: ¡Todo anda Ok!

- Pero en cuanto la compactas: ¡Volvemos al principio del problema!, o sea al mensaje: No es una contraseña válida.

Me parece que aquella experiencia que he relatado sobre conectarnos a una BD mediante MS Query o mediante "Importar MS Access" (en donde "el intento es manual"), brinda una idea más certera de lo que ocurre: ¡Tiene que haber una limitante importante con el tema de las BD's compactadas y sus contraseñas a partir de Access 2007!, ¿No lo crees?... (vaya gracia me hace).

:)

.

A mi me funciona ya sea con la BD sin compactar o compactada.

Uso Office 2010. El 2007 tenía más bugs que una atracción de feria. Mira de cargarle todas las actualizaciones posibles, que esté a la última. Con el SP1 (creo que no salió el SP2) ya funcionaba de un modo decente. Ya mucho más no puedo decirte, juraría que es un problema de tu office.

:)

Si te funciona con la BD compactada y con contraseña: ¡Estoy en un problema puesto que tengo tomadas todas las prevenciones que mencionas!

Y bueno: ¡Será cuestión de re-instalar!, ¿No?...

Gracias por tus comentarios y sugerencias, Jesús.

:)

.

.

Hola! Jesús

Como "no me sonaba" bien lo de la re-instalación seguí preguntando -por aquí y por allá- y resulta que el problema se solucionaba así:

1. Abrir la base de datos en modo exclusivo.
2. Quitarle la contraseña.
3. Seleccionar en Archivo\ Opciones\ Configuración del cliente\ Avanzadas: Usar cifrado heredado.
4. Volver a poner una contraseña a la base de datos.

¡Y fin del problema!...

Lo dejo aquí escrito por si a otra persona le llegara a pasar lo mismo.

Nuevamente saludos y gracias por tus orientaciones.

:)

.

Todos los días se aprende algo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas