Problemas con Visual y Access

Tengo un problemilla con Visual y Access. Tengo una aplicación programada en Visual Basic 6.0 conectada a un base de datos access. Todo funciona perfectamente, pero ahora quería ponerle contraseña a la base de datos. Para acceder a la base de datos desde visual basic utilizo un fichero .UDL y después de poner la contraseña en la base de datos e intentar actualizar el .UDL me sale el siguiente error:
"Error en la prueba de conexión al inicializar al proveedor. No se puede iniciar la aplicación. Falta el archivo de información del grupo de trabajo o bien esta abierto en modo exclusivo por otro usuario."
He intentado crear un grupo de trabajo como dice el error aunque preferiría que funcionara sin el, pero aun así no funciona. ¿Cómo lo podría arreglar?

2 respuestas

Respuesta
1
Prueba esta cadena de conexión
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Cursos\ejemplos codigos vb\ejemplo bd\ejemplo.mdb;Persist Security Info=False;Jet OLEDB:Database Password=prueba
Fíjate en la ultimma parte jet oledb:database password ahí va la contraseña de la base de datos en general, porque me imagino que tu estas utilizando la contraseña que por usuario, en esa dejala en blanco... suerte si tienes más dudas sigue preguntando...
Un millón de gracias! La verdad es que no se como lo he conseguido, porque después de hacer miles de pruebas se me ha ocurrido abrir el UDL con el bloc de notas y cambiarlo directamente desde ahí poniendo lo que me has dicho tu y... FUNCIONA!
Respuesta
1
Bien: lo que tienes que hacer es crear el .udl mediante código, Ahí se le pondrá la cadena de conexión que te mencione arriba.
Este es el código para crearlo:
Public Sub CreateUDLFile(ConnectionString As String, FileName As String)
Dim FSO As New Scripting.FileSystemObject
Dim TXT As Scripting.TextStream
' Cree un archivo en modo-Unicode
Set TXT = FSO.CreateTextFile(FileName, True, True)
With TXT
.WriteLine "[oledb]"
' Esta línea necesita estar exactamente mientras que es una secuencia
'
.WriteLine "; después de esta línea es una secuencia OLE"
.WriteLine ConnectionString
.Close
End With
End Sub
y para usarlo:
CreateUDLFile "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd1.mdb;Jet OLEDB:Database Password =tu_contraseña", "NewUDL.udl"
despues de esto conectamos el .udl:
con1.ConnectionString = "FILE NAME=" & App.Path & "\" & cboConnections.Text & ".udl"
Con1. Open
Y es todo.
Muchas gracias por contestar tan pronto. Yo no uso ningún tipo de control para acceder a la base de datos... Lo hago todo por código usando los RecordSet, Connection y demás. Si, ya se que es mucho más fácil usar ADO por ejemplo, pero es cuestión de costumbres...
De la forma en que yo lo hago, le doy la ruta de la base de datos y la contraseña desde el .UDL y luego en el código referencio a ese .UDL.
El error no tiene nada que ver con el código de visual basic, ya que sale cuando relleno el UDL y le doy a probar conexión. Si la base de datos no tiene contraseña me funciona todo bien (incluido el código del visual).
Muchas gracias.
El problema es en la conexión donde debes pasar la contraseña de la BD.
No se como te conectas a la BD pero a qui te van las dos:
Con el control Data de (DAO)
Data1.Conect=";pw=tu_contraseña"
Con el control Data de (ADO)
Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd1.mdb;Jet OLEDB:Database Password = tu_contraseña"
Muchísimas gracias. Con gente así da gusto! Hasta la próxima!
Bueno, me vas a perdonar por escribirte de nuevo, pero he seguido dándole vueltas y ya me ha salido. JE JE. Lo que he hecho es cambiar el connection String que me has dado tu por el que había puesto yo a mano desde el bloc de notas... No se porque con el tuyo no salia... He puesto esto:
CreateUDLFile "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\OSTATU.mdb;Persist Security Info=False;Jet OLEDB:Database Password=prueba", "NewUDL.udl"
VCON.ConnectionString = "FILE NAME=" & App.Path & "\NewUDL.udl"
VCON.open
Pues a lo dicho, te dejo que me contestes por si esta algo mal o lo que sea y luego te pongo el 5 que te mereces, ¿ok?
Muchas gracias.
Anda! Espera! Ya lo he conseguido! Al final he abierto el UDL con el bloc de notas y he cambiado directamente su código. Ahora funciona perfectamente! QUE BIEN! Bueno, ya que te he hecho la pregunta anterior de lo del cboConnections.Text, voy a esperar a que me contestes a eso (para aprender a hacerlo de esa forma también correctamente) y luego te finalizo la pregunta con un pedazo de 5, ¿vale? JE JE. Muchas gracias!
He intentado hacer lo que me dices pero me da error. Te explico como lo tengo para ver si me puedes ayudar...
Lo que me has dicho tu lo tengo tal y como me lo has puesto (cambiando las rutas de mis archivos, claro). El UDL yo creo que me lo crea bien. Luego en el código de visual he hecho lo siguiente:
VCON.ConnectionString = "file name=" & App.Path & "\NewUDL.UDL"
VCON.open
donde tu ponias cboConnections.Text he puesto el nombre del UDL... no se si era eso a lo que te referias...
El error me, VCON.open. Es el siguiente: "Error '-2147286789 (800300fb)' en tiempo de ejecución: El archivo no es un archivo compuesto válido".
¿Se te ocurre algo?
Bueno así es esto de la programación no se sabe que cosas nuevas se aprenden.
Lo mejor de esto es ayudarse entre programadores.
Y si el cboConnections.Text es un combo donde cargo los UDL.
Hasta la próxima

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas