retornar un recordset desde una clase
mi problema es que quiero retornar un recordset ejecutando un metodo de una clase, pero cuando me lo devuelve esta cerrado y no me lo deja abrir.
me esta faltando algo?
envio un codigo resumido como ejemplo. Gracias.
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
me esta faltando algo?
envio un codigo resumido como ejemplo. Gracias.
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
Te expongo mi hipótesis. Creo que el problema está
en que el objeto cn es destruido al terminar la función
Ejecutar porque ese objeto está declarado dentro de
la mismafunción y cuando esta termina sus variables
son liberadas.
Después de eso es normal que lo que devuelve la función
no sea correcto, ya que el valor de retorno es una referencia
a un objeto destruido.
Yo en tu lugar declararía el objeto cn a nivel de módulo,
de forma que exista mientras existe el objeto consulta.
en que el objeto cn es destruido al terminar la función
Ejecutar porque ese objeto está declarado dentro de
la mismafunción y cuando esta termina sus variables
son liberadas.
Después de eso es normal que lo que devuelve la función
no sea correcto, ya que el valor de retorno es una referencia
a un objeto destruido.
Yo en tu lugar declararía el objeto cn a nivel de módulo,
de forma que exista mientras existe el objeto consulta.
