Donde incluir la contraseña en este código

Al incluir este código en un botón me dice Error al compactar la base de datos: -2147217843 No es una contraseña válida.

He tratado de incluirla pero no encuentro el lugar correcto, pensemos que la contraseña es c2023f1825. ¿Dónde se ubicaría? Gracias de antemano

Sub Compactar_click()
' Compactar una base de datos con ADO
Dim sDBTmp As String
Dim je As JRO.JetEngine
'
On Error GoTo ErrCompactar
'
Set je = New JRO.JetEngine
'
' Crear un nombre "medio" aleatorio
sDBTmp = "DBT_" & Format$(Minute(Now), "00") & Format$(Second(Now), "00") & ".mdb"
' Asegurarnos de que no existe una base con el nombre temporal
If Len(Dir$(sDBTmp)) Then
Kill sDBTmp
End If
'
MsgBox " Compactando la base de datos..."
' Compactar la base de datos
je.CompactDatabase "Data Source=" & "D:\SG RADIO+\Datos SGR v2.0.mdb" & ";", _
"Data Source=" & sDBTmp & ";"
'
' Eliminar la base de datos original
Kill "Datos SGR v2.0.mdb"
'
' Renombrar la base temporal con el original
Name sDBTmp As "Datos SGR v2.0.mdb"
'
MsgBox " Base de datos compactada."
'
Exit Sub
'
ErrCompactar:
' Mostrar el mensaje de error
MsgBox "Error al compactar la base de datos:" & vbCrLf & _
Err.Number & " " & Err.Description, _
vbExclamation, "Error al compactar la base de datos"
Err.Clear
MsgBox " *** Error al compactar la base de datos ***"
End Sub

2 respuestas

Respuesta
1

La contraseña se ubicaría en la cadena de conexión de la base de datos. En este caso, la cadena de conexión se construye en las líneas:

je.CompactDatabase "Data Source=" & "D:\SG RADIO+\Datos SGR v2.0.mdb" & ";", _
"Data Source=" & sDBTmp & ";"

Para incluir la contraseña, debe modificar la cadena de conexión para que incluya el parámetro "Jet OLEDB:Database Password" seguido de la contraseña. Es decir:

je.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\SG RADIO+\Datos SGR v2.0.mdb;Jet OLEDB:Database Password=c2023f1825;", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDBTmp & ";Jet OLEDB:Database Password=c2023f1825;"

No olvide reemplazar "c2023f1825" con tu contraseña real.

Me da este error 

En su código, veo que está utilizando la ruta "D:\SG RADIO+\Datos SGR v2.0.mdb" para la base de datos original y la variable "sDBTmp" para la base de datos temporal. Asegúrate de que ambas rutas sean correctas y de que los archivos de base de datos existan en esas ubicaciones.

Además, verifique si la contraseña que está utilizando es correcta. Si la contraseña no coincide con la que se estableció en la base de datos, también puede generar un error al intentar compactarla.

Muchas gracias amigo, ciertamente no había prestado atención a algunas líneas del código y lo hice y todo salió perfecto, algo más y me disculpa, tiene usted algún método para que a los .mde no les puedan importar las consultas, ¿formularios y demás desde una base de datos nueva?

No, no es posible importar directamente objetos de una base de datos MDE (Microsoft Access Database) en Access. Los archivos MDE son bases de datos de Access que han sido compiladas y convertidas en un formato ejecutable. Este tipo de archivo tiene el propósito de distribuir una aplicación de base de datos sin permitir la modificación de su diseño o código.

Respuesta
1

Carlos, no entro en valorar lo que tienes sino en proponerte algo más sencillo. Si a fin de cuentas lo que quieres es que el resultado sea la misma base a compactar. Si tengo un botón de comando (aunque la instrucción se puede poner en otro evento cualquiera)

Es botón sería el que cerraría la base. Si lo pulso

Si acierto la compacta con su mismo nombre, si fallo no la compacta. El código es

Private Sub Comando1_Click()
Dim respuesta As String
respuesta = InputBox("Escriba la contraseña", "Muchas gracias")
If respuesta <> "12345" Then
Exit Sub
Else
Application.SetOption "Auto Compact", True
End If
DoCmd.Quit
End Sub

Donde digo 12345 tienes que poner tu contraseña

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas