SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: juanweston en Viernes 5 de Septiembre de 2003, 12:12
-
mi problema es que quiero retornar un recordset ejecutando un metodo de una clase pero me queda cerrado y me dice que no puede abrirlo. el codigo resumido seria el siguiente:
Private Sub Form_Load()
Dim rs As New ADODB.Recordset
Dim Consulta As New cConsulta
Set rs = Consulta.Ejecutar("SELECT * FROM clientes")
// AQUI ESTA MI PROBLEMA. ya me dice que el recordset no se puede abrir
Set rs = Nothing
Set Consulta = Nothing
End Sub
Public Function Ejecutar(consulta as string) As ADODB.Recordset
Dim cn As New cConexion
cn.Inicializar App.path & "base de datos.mdb", ClaveBD
cn.SQL consulta
Set Ejecutar = cn.rs // hasta aqui todo OK. el recordset devuelve registros
Set cn = Nothing
End Function
:question:
-
Creo que el problema lo tienes porque destruyes la referencia al objeto cConexion (set cn = Nothing) antes de tiempo. Si defines 'cn' a nivel de módulo y destruyes la referencia al objeto con el evento 'Terminate' de la clase en vez de al finalizar la función, tu problema debe quedar resuelto.
Suerte.
-
Te envío un código con lo que creo pretendes hacer, y que funciona, ya que como lo tienes todo en clases hay código del que sólo se puede suponer lo que hace.
Espero que te sirva
:suerte: