Foros del Web » Programación para mayores de 30 ;) » Programación General »

Bases de datos y VB 6.0

Estas en el tema de Bases de datos y VB 6.0 en el foro de Programación General en Foros del Web. Tengo una aplicación en Visual Basic 6.0 y una base de datos con Access XP. La aplicación tiene que acceder a los datos de la ...
  #1 (permalink)  
Antiguo 13/05/2004, 11:23
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Bases de datos y VB 6.0

Tengo una aplicación en Visual Basic 6.0 y una base de datos con Access XP. La aplicación tiene que acceder a los datos de la base de datos, pero la base de datos tiene contraseña. Para hacer la conexión tengo el siguiente código:
dim ws as workspace
Set ws = CreateWorkspace("", "admin", "contraseña", dbUseJet)
Pero cuando intenta acceder a ella me dice lo siguiente:
"No se puede iniciar la aplicación. Falta el archivo de información del grupo de trabajo o bien está abierto en modo exclusivo por otro usuario"
La base de datos en todo momento se encuentra cerrada, y no quiero quitarle la clave. Cómo puedo acceder a la base de datos?
Gracias por todo.
  #2 (permalink)  
Antiguo 13/05/2004, 16:14
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 1 mes
Puntos: 3
hola.. quizás el visual no reconzca la BD de Access XP, prueba convirtiéndola a access 2000 o 97

saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #3 (permalink)  
Antiguo 14/05/2004, 03:28
 
Fecha de Ingreso: enero-2004
Mensajes: 396
Antigüedad: 20 años, 10 meses
Puntos: 0
El problema seguramente venga porque hay un archivo , el system.mdw, creo que era, que en cuanto esta en uso, dependiendo de como tengas configurado el equipo, no deja abrir ninguna BBDD.

VB6 si que soporta AccessXp , ya que lo uinico que necesitas es la version correcta del proveedor de datos.
  #4 (permalink)  
Antiguo 14/05/2004, 10:53
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Para abrir la base de datos de access XP uso "dbUseJet" y con eso me la abre. El problema es si tengo una clave puesta en la base de datos. Cómo puedo acceder a ella aún teniendo clave? Y, qué es ese archivo? Puedo modificarlo o algo así?
Gracias por todo.
  #5 (permalink)  
Antiguo 14/05/2004, 17:07
 
Fecha de Ingreso: octubre-2003
Ubicación: Hermosillo, Sonora
Mensajes: 75
Antigüedad: 21 años, 1 mes
Puntos: 0
Prueba con el siguiente string de conexión:
"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & strRuta & "; UID=" & strUsuario & "; PWD=" & strPass

strRuta = ruta completa de donde tienes la base de datos
strUsuairo = usuario
strPass = password


espero te sirva
  #6 (permalink)  
Antiguo 15/05/2004, 04:25
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Dónde tengo que definir el driver? Es que lo he intentado de varias maneras, pero no consigo nada. Me lo puedes volver a explicar? Muchas gracias
  #7 (permalink)  
Antiguo 15/05/2004, 20:45
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Hola:

Creo tener la respuesta a tu pregunta, voy a utilizar ADODB y no un WorkSpace, porque no me gustan del todo


Primero vete al menu PROYECTO -> REFERENCIAS y agrega una referencia a la libreria "Microsoft ActiveX Data Objects"


Despues el siguiente codigo

'Declaracion de variables para abrir la base de datos
Public Cnn As New ADODB.Connection
Public Rst As New ADODB.Recordset

'Al cargar el formulario se abre la base
'Y se cargan todos los datos de la tabla
'en este ejemplo la base de datos access es PRUEBACONTRA.MDB
'Y la tabla se llama TABLE1
Private Sub Form_Load()
Cnn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\PruebaContra.mdb;pwd=MiPass"
Cnn.Open

With Rst
.ActiveConnection = Cnn
.LockType = adLockReadOnly
.CursorType = adOpenStatic
.Open "Select * from Tabla1"
End With

End Sub


Nota: en este caso la base de datos se encuentra en la misma ruta que tu proyecto, de lo contrario sustituye la instruccion APP.PATH por la ruta de la base de datos en disco.
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #8 (permalink)  
Antiguo 17/05/2004, 11:40
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Muchísimas gracias. Eso era exactamente lo que quería. Funciona a la perfección. Una cosilla solo:
Tengo todo el proyecto hecho con "workspace" y objetos "database" pero al ponerle la clave a la base de datos, la manera de abrirla la tengo que cambiar por lo que me has pasado. Para no tener que cambiar todo, hay alguna manera de abrir la base de datos con las sentencias que me has dado y luego pasarlo a un objeto "database"? Eso me ayudaría muchísimo... Muchas gracias por todo.
  #9 (permalink)  
Antiguo 17/05/2004, 15:16
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Me gustaria que pudieras ser mas explicita, ya que no entiendo del todo bien tu pregunta, si puedes de preferencia con un ejemplo de codigo por favor.

Y cual es la finalidad de la aplicacion?
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #10 (permalink)  
Antiguo 17/05/2004, 15:38
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Mi aplicación es para gestionar una base de datos. La aplicación debe tratar los datos de la base de datos, introducir nuevos datos, modificarlos, etc. Para ello, hasta ahora abría la base de datos de la siguiente manera:

dim ws as workspace
dim db as database

Set ws = CreateWorkspace("", "admin", "", dbUseJet)
Set db = ws.OpenDatabase(App.Path & "\Nombre_DB.mdb", False, False)

De esta forma, cuando necesito tratar los datos de la base de datos utilizo objetos "recordset" o "querydef", según la acción que quiera realizar.
Para ello utilizo el objeto "database". Por ejemplo:

dim rs as recordset
dim sql as string

sql="select * from ALUMNOS where DNI=" & dni
set rs=db.OperRecordset(sql)

o:

dim qd as QueryDef

set qd=db.CreateQueryDef("")
qd.sql="delete ALUMNOS where DNI=" & dni
qd.Execute
qd.Close

Hasta ahora tengo toda la aplicación así. Pero al finalizarla, le pondré una clave a la base de datos (para hacer pruebas no la necesitaba) y para poder acceder a la base de datos realizo la conexión como me has dicho. Pero ahora no tengo el objeto "database" por ningún lado. Con lo cual tendría que modificar todo el código. Cómo puedo volver a abrir un objeto "database" con la conexión que me has dado?
Espero que con todo esto puedas entenderme... Muchas gracias.
  #11 (permalink)  
Antiguo 17/05/2004, 16:23
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Creo que he encontrado la respuesta a tu pregunta:

Si lo que estas utilizando con objetos DAO.Database abre tu base de esta manera
'Declaras en tu seccion de Variables
Public DbAD1 as DAO.DataBase

'Y abres la conexion
Set DbAD1 = OpenDatabase(App.Path & "\PruebaContra.mdb", False, False, ";pwd=MiPass")


Ojala te sirva.. hasta pronto
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #12 (permalink)  
Antiguo 17/05/2004, 16:26
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Ya he probado y no importa si tu Variable esta declarada como

Public DbAD1 as DAO.DataBase

o como

Public DbAD1 as DataBase


Funciona bien de ambas maneras =)
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #13 (permalink)  
Antiguo 17/05/2004, 16:33
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Ya he probado lo que me has dicho y al ejecutar el proyecto me dice lo siguiente:
"No se puede encontrar el archivo ISAM instalable"
Tienes idea de qué quiere decir con eso?
  #14 (permalink)  
Antiguo 17/05/2004, 16:55
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Pues nunca me habia salido ese error, tal vez se pueda deber a los service packs, si utilizas Visual Basic 6 verifica tener instalado minimo el Service Pack 4 y 5
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #15 (permalink)  
Antiguo 17/05/2004, 20:05
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años, 7 meses
Puntos: 1
Investigando un poco en tu pregunta acerca del error encontre lo siguiente:

http://support.microsoft.com/default...=kb;es;e283881


Creo que lo mejor es que esa base de datos la exportes a una version anterior Access 2000 para que no marque ese tipo de problemas. Yo probe el codigo bajo windows XP y Access 2000 y funciono a la perfeccion. Entonces segun el articulo de la pagina de microsoft del link que te puse arriba y mis humildes conclusiones es tu version de Access el problema.


Espero haber sido de ayuda.. hasta pronto
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #16 (permalink)  
Antiguo 18/05/2004, 08:18
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Según vaya adelantando el proyecto iré decidiendo qué hacer con mi versión de la base de datos.
Muchas gracias por todo, me has ayudado mucho.
  #17 (permalink)  
Antiguo 22/05/2004, 08:47
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
Antes de nada daros las gracias a todos por haberme echado una mano con este tema.
No me di por vencida y finalmente he encontrado la manera de realizar esa conexión, y FUNCIONA!!! Aquí va el código, por si alguien lo necesita alguna vez:

dim strConectar as String
strConectar=";DATABASE=" & App.Path & "nombre_BD;PWD=" & contraseña

dim db as Database
set db=OpenDatabase("",Flase,False,strConectar)

Así puedo abrir la base de datos como lo he hecho siempre y además utilizar todos los objetos que ya había utilizado antes (como recordset o querydef)

Saludos a todos!
  #18 (permalink)  
Antiguo 23/05/2004, 10:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 3
Antigüedad: 20 años, 6 meses
Puntos: 0
al instalar vb te falta instalar una opcion que se llama presisamente isam creo que es para el manejo de bd.

seguro no la cargaste
  #19 (permalink)  
Antiguo 23/05/2004, 10:36
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 21 años, 4 meses
Puntos: 0
No sé qué es isam, pero con todo lo que tengo instalado en visual basic puedo acceder y tratar los datos de la base de datos. Y con el código que he conseguido finalmente, no tengo ningún problema para realizar esa conexión teniendo una contraseña puesta en la base de datos. Gracias por todo!
  #20 (permalink)  
Antiguo 04/07/2005, 16:55
 
Fecha de Ingreso: julio-2005
Mensajes: 1
Antigüedad: 19 años, 4 meses
Puntos: 0
Cita:
Iniciado por aigama
Tengo una aplicación en Visual Basic 6.0 y una base de datos con Access XP. La aplicación tiene que acceder a los datos de la base de datos, pero la base de datos tiene contraseña. Para hacer la conexión tengo el siguiente código:
dim ws as workspace
Set ws = CreateWorkspace("", "admin", "contraseña", dbUseJet)
Pero cuando intenta acceder a ella me dice lo siguiente:
"No se puede iniciar la aplicación. Falta el archivo de información del grupo de trabajo o bien está abierto en modo exclusivo por otro usuario"
La base de datos en todo momento se encuentra cerrada, y no quiero quitarle la clave. Cómo puedo acceder a la base de datos?
Gracias por todo.
Yo tuve los mismos quebraderos de cabeza y los solucioné a partir de la información que encontré en la página del 'guille'.
Sencillamento se utiliza el método OpenDataBase con un quinto parámeto que no aparece descrito en la documentación ni en la ayuda. ¡Cosas!
Espero que te sirva...
http://www.elguille.info/colabora/vb...ridadmsjet.htm
  #21 (permalink)  
Antiguo 05/07/2005, 12:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Exclamación


Hasta cuando tendrán que colocar posts de vb en programación......
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:32.