Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

conexion de una BD utilizando un modulo en VB 6.0

Estas en el tema de conexion de una BD utilizando un modulo en VB 6.0 en el foro de Visual Basic clásico en Foros del Web. En el formulario quiero abrir la BD y las tablas. pero me vota un error "la variable de tipo object no esta establecida" Tengo estas ...
  #1 (permalink)  
Antiguo 11/10/2008, 14:03
 
Fecha de Ingreso: octubre-2008
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
conexion de una BD utilizando un modulo en VB 6.0

En el formulario quiero abrir la BD y las tablas. pero me vota un error "la variable de tipo object no esta establecida"

Tengo estas lineas de codigo.......................
************************************
Modulo
******

Public rs As ADODB.Recordset
Public con As Connection
Private Sub Conexion()
Set con = New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
con.Open
End Sub

*************************************
formulario
********

rs.Open ("select * from clientes")
Text1.Text = rs.Fields("nombre")

**********************************
¿Si alguien puede Ayudeme lo necesito de urgencia?
¡ A x cierto quiero vizualizar los campos en cuadros de texto!
  #2 (permalink)  
Antiguo 11/10/2008, 15:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Activa la referencia Microsoft activeX DataObject 2.1 library
menu proyecto/referencias
  #3 (permalink)  
Antiguo 12/10/2008, 03:20
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Cita:
Iniciado por KingColt Ver Mensaje
Activa la referencia Microsoft activeX DataObject 2.1 library
menu proyecto/referencias
No, no creo que sea por no tener referencia a ADO, ya que el error sería 'No se ha definido el tipo definido por el usuario'
Mas bien creo que el error es porque le falta asignar la referencia de objeto a la variable 'rs'

Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM clientes", con
' <-- no olvides poner la conexión.

  #4 (permalink)  
Antiguo 12/10/2008, 07:08
 
Fecha de Ingreso: octubre-2008
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Quise activar la refernecia de Microsoft y Adicione las otras lineeas de codigo y presenta el mismo error.

De igual forma gracias!
Si tienen otra opcion me la envian para probar si sale?
  #5 (permalink)  
Antiguo 12/10/2008, 07:34
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Cita:
Iniciado por chicho28 Ver Mensaje
Quise activar la refernecia de Microsoft y Adicione las otras lineeas de codigo y presenta el mismo error.

De igual forma gracias!
Si tienen otra opcion me la envian para probar si sale?
Ya! y puedes mostrar el código que pones y en la línea que 'vota' el error "la variable de tipo object no esta establecida"?

Nota: No lo escribas a mano, haz un copy-paste del código que tienes en el proyecto, se evitarán errores de interpretación.

  #6 (permalink)  
Antiguo 12/10/2008, 09:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Aqui estan las lineas?
***********************

Private Sub Form_Load()
Set rs = New ADODB.Recordset // puse esto y tampoco funciona
rs.Open ("select * from clientes"), con ** aqui es el error
Text1.Text = rs.Fields("nombre")
End Sub

Última edición por chicho28; 12/10/2008 a las 09:27
  #7 (permalink)  
Antiguo 12/10/2008, 17:02
 
Fecha de Ingreso: febrero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Prueba asi:
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM clientes", con, adOpenStatic, adLockOptimistic

Ó en la funcion de tu modulo cambia el nombre Private Sub Conexion() por Public Sub Main()
Entra a menu proyecto/propiedades del proyecto/ y escoje Sub Main del combo Objeto inicial, asi inicias desde la funcion del modulo, no se mucho sobre modulos pero no veo donde inicias o llamas a la funcion Conexion()?
  #8 (permalink)  
Antiguo 13/10/2008, 01:50
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Cita:
Iniciado por chicho28 Ver Mensaje
Aqui estan las lineas?
***********************

Private Sub Form_Load()
Set rs = New ADODB.Recordset // puse esto y tampoco funciona
rs.Open ("select * from clientes"), con ** aqui es el error
Text1.Text = rs.Fields("nombre")
End Sub
Efectivamente, es por lo que te dice KingColt. No estás abriendo la conexión.

Lo normal, es que en módulo .bas se declaren las variables Públicas y en el formulario de inicio (o Sub Main) se ejecuten las conexiones y antes de salir de la aplicación, se cierren.

De todas formas, si quieres seguir manteniendola en el .bas, debes declarar el procedimiento Conexion() como Public y no Private y llamarla desde el Form_Load() antes de abrir el recordset.

  #9 (permalink)  
Antiguo 13/10/2008, 09:06
 
Fecha de Ingreso: octubre-2008
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Lo corregi de esta forma!
**********************
Modulo
******

Public con As Connection

Public Sub Main()
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
con.Open
End Sub

********
Formulario
********


Private Sub Form_Load()

Set rs = New ADODB.Recordset
rs.Open ("select * from clientes"), con, adOpenStatic, adLockOptimistic
Text1.Text = rs.Fields("nombre")
End Sub


////////////////////////////////////

Ahora no sale ningun error, y en cambio ejecuta y regresa de nuevo al modo de diseño y no se ve para nada el formulario.
  #10 (permalink)  
Antiguo 13/10/2008, 09:19
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

Cita:
Iniciado por chicho28 Ver Mensaje
Lo corregi de esta forma!
**********************
Modulo
******

Public con As Connection

Public Sub Main()
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
con.Open
End Sub

********
Formulario
********


Private Sub Form_Load()

Set rs = New ADODB.Recordset
rs.Open ("select * from clientes"), con, adOpenStatic, adLockOptimistic
Text1.Text = rs.Fields("nombre")
End Sub


////////////////////////////////////

Ahora no sale ningun error, y en cambio ejecuta y regresa de nuevo al modo de diseño y no se ve para nada el formulario.
Hay dos cosas, primero una vez abierta la conexión tienes que mostrar el formulario de inicio (en el que quieres mostrar el campo nombre) y segundo, no estás declarando la variable 'rs'

El fin, en el módulo .bas debería de quedar así:

Código:
Public con As ADODB.Connection
Public rs As ADODB.Recordset

Public Sub Main()
Set con = New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
con.Open
Form1.Show
End Sub
Suponiendo que el nombre del formulario sea 'Form1'

  #11 (permalink)  
Antiguo 13/10/2008, 13:20
 
Fecha de Ingreso: octubre-2008
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: conexion de una BD utilizando un modulo en VB 6.0

¡¡¡¡¡ Funciono!!!!
Que bestia me olvide eso tan sencillo no estaba mostrando el formulario.

Gracias por la ayuda que me dierion.........
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 18:24.