La Web del Programador: Comunidad de Programadores
 
    Pregunta:  42071 - BASES CON CONTRASEÑA
Autor:  Mariano Cócora
Quisiera saber como abrir una base de Access 97 con contraseña mediante codigo desde Visual Basic 6.0 sin usar objeto data, mediante variables recordset y demas. Desde ya muchas gracias!

  Respuesta:  Oswaldo Monagas
Abrir con ADO estableciendo usuarios

'Agregar en las referencias
'Microsoft ActiveX Data Objects 2.0 Library
'o alguna version mas reciente
'declarar esto en un módulo .bas

Private DBConnection As New ADODB.Connection
'Abre una base de datos access
'Regresa :
'True = Exito al conectar
'False = Error al conectar
'

Public Function AbrirBaseDatosAccess(ByVal BaseAccess As String, _
Optional ByVal Access2000 As Boolean = False, _
Optional ByVal Usuario As String = "", _
Optional ByVal Password As String = "") As Boolean
On Error GoTo ErrorAbrirBaseDatosAccess

Dim ret As Boolean
Dim Conexion As String
ret = True
If Not Access2000 Then 'access 97
Conexion = "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Persist Security Info=False;Data Source=" & BaseAccess
Else 'access 2000
Conexion = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Persist Security Info=False;Data Source=" & BaseAccess
End If

DBConnection.ConnectionTimeout = 0 'no hay limite de espera de tiempo
If Usuario <> "" Then
DBConnection.Open Conexion, Usuario, Password
Else
DBConnection.Open Conexion
End If

GoTo SalirAbrirBaseDatosAccess

ErrorAbrirBaseDatosAccess:
ret = False
MsgBox "AbrirBaseDatosAccess : " & Err & " " & Error$, vbCritical
Resume SalirAbrirBaseDatosAccess
SalirAbrirBaseDatosAccess:
AbrirBaseDatosAccess = ret
Err = 0
End Function

Otra forma:
Abrir una base de datos con seguridad desde ADO
Permite abrir desde Visual Basic una base de datos cuando hay establecida seguridad a nivel de usuario

La seguridad utilizada convencionalmente por Microsoft Access es una seguridad a nivel de usuario, controlada desde los ficheros .MDB y .MDA o .MDW (según versión de Microsoft Access). NOTA: Aunque se disponga de Microsoft Access en idioma castellano y el usuario se llame Administrador, es necesario pasar "Admin" como UserID, y no "Administrador". Microsoft Access 7.0 y Microsoft Access 97 también incorporan otro tipo de seguridad, asociada a la base de datos (se protege la base de datos con una contraseña que forma parte del fichero .MDB, y que solamente es solicitada al abrir ésta). El código aquí incluido permite abrir desde Visual Basic una base de datos cuando hay establecida seguridad a nivel de usuario. Previamente, desde el entorno de Microsoft Access se ha asignado al usuario Administrador (que es por defecto el propietario de todas las bases de datos) una contraseña ("ejemplo"). Esto se hace en Access 97 en la opción de menú Herramientas, Seguridad, Cuentas de usuario y de grupo y, una vez ahí, accediendo a la pestaña Cambiar contraseña de conexión. A partir de entonces, al abrir Access será necesario proporcionar el usuario y la contraseña. También a partir de entonces, para abrir un MDB desde VB será necesario pasarle el usuario y la contraseña.

Dim Cn As New ADODB.Connection
Dim strCn As String
strCn = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
"Data Source=nwind.MDB;" & _
"Jet OLEDB:System database=c:\winnt\system32\System.MDW"
Cn.Open ConnectionString:=strCn, _
UserID:="Admin", Password:="moises"