Respuesta de Enrique MArtinez
=============================
El problema está en la versión de la biblioteca de Access que tengas
referenciada en tu proyecto de Visual Basic. La sintaxis del método
«OpenCurrentDatabase» correspondiente a la biblioteca «Microsoft Access 10.0
Object Library» (Access XP), es la siguiente:
apliccaccess.OpenCurrentDatabase(ruta, Exclusivo, Contraseña)
Desconozco la sintaxis correspondiente a la versión 9.0 de la citada
biblioteca (Access 2000), aunque por lo que he leído, no dispone del
argumento «Contraseña». Pero sí te puedo confirmar que la sintaxis de la
versión 8.0 (Access 97) tampoco dispone del citado parámetro, de ahí que te
de el error «Número de argumentos erróneo o asignación de propiedad no
válida» cuando utilizas el ejemplo que te envié.
> Si tú has probado el código, quizás yo esté haciendo algo
> incorrecto. ¿ Podrias ser un poco más explícito ?
Creo que está ya explicado: si la versión de la biblioteca «Microsoft Access
X Object Library» que utilizas en tu proyecto VB no permite el argumento
«Contraseña», no podrás utilizar el método «OpenCurrentDatabase» para abrir
una base de datos que esté protegida con una contraseña. No obstante, te
recomiendo que expongas tu problema en el grupo de Access
(microsoft.public.es.access), por si los compañeros de dicho grupo conocen
otra solución.
Yo conozco otras soluciones para abrir una base de datos con contraseña
mediante DAO y ADO. Si estás interesado, en la siguiente dirección de la
Knowledge Base, encontrarás información de como abrir una base de datos
Access 2000 protegida mediante DAO. Si entiendes un poco de inglés, en ese
mismo artículo explica que el método «OpenCurrentDatabase» no proporciona un
parámetro para especificar la contraseña, cosa que si lo hace la versión
10.0 de Microsoft Access Object Library:
HOW TO: Open a Password-Protected Database Through Automation in Access 2000
http://support.microsoft.com/default.aspx?scid=kb;en-us;235422
Un saludo.
--
Enrique Martínez
[MS MVP - VB]
ANEXO DE EJMPLO DEL BUHO
========================
Option Explicit
Function BuhoAccess2000()
'Esta es la que hacía yo hasta ahora desde Access 2000
Dim db As Database
Dim InstanciaAccess As Access.Application
Set InstanciaAccess = New Access.Application
Set db = InstanciaAccess.DBEngine.OpenDatabase("c:\twpac\datos.mdb", False, False, ";PWD=330086")
InstanciaAccess.OpenCurrentDatabase "c:\twpac\datos.mdb"
'si quería ver la MDB fisicamente abierta:
InstanciaAccess.Visible = True
'aqui operaría con dicha MDB
'etc etc
db.Close
Set db = Nothing
End Function
'----------------------------------------------------------------------
Function AbreBaseDatosProtegidaMicrosoft()
'Sacada de la Web de Microsfot y a la postre es como la anterior mía
'Access 2000
Static AccInstanciaAccess As Access.Application
Dim db As DAO.Database
Dim Nombrebasedatos As String
Nombrebasedatos = "C:\twpac\datos.mdb"
Set AccInstanciaAccess = New Access.Application
AccInstanciaAccess.Visible = True
Set db = AccInstanciaAccess.DBEngine.OpenDatabase(Nombrebasedatos, False, False, ";PWD=330086")
AccInstanciaAccess.OpenCurrentDatabase Nombrebasedatos
db.Close
Set db = Nothing
End Function
'-----------------------------------------
Function AbrirBasedatosXP()
'Access XP
Dim Dbs As Database
Dim AccInstanciaAccess As Access.Application
Set AccInstanciaAccess = New Access.Application
AccInstanciaAccess.OpenCurrentDatabase "C:\Twpac\datos.mdb", False, "330086"
AccInstanciaAccess.Visible = True
Set Dbs = AccInstanciaAccess.CurrentDb
'opero con la MDB
End Function
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)