Visual Basic - Liberar memoria con ADO

Life is soft - evento anual de software empresarial
   
Vista:

Liberar memoria con ADO

Publicado por Mne9 (11 intervenciones) el 11/04/2008 09:05:45
Recurro nuevamente al foro con esta cuestion que me tiene preocupado ..
En varios procedimientos declaro recordsets locales y mantengo una conexion declarada en global.
Estos recordsets van siendo asignados al recordset de un ADODC (set Adodc1.recordset = recordset) luego puedo tranquilamente setear Nothing al recordset de procedimiento, pero.: al cerrarlo (.Close) pierdo todo en un datagrid (con recordsource al ADODC).

Bueno, espero no marear demasiado pero es que no termino de entender el funcionamiento,.. ¿Acaso Set simplemente referencia y mantiene esa referencia? y de ser así ¿El recordset de procedimiento sobrevive al finalizar ese ámbito?..¿Y cuando le asigno Nothing que es lo que sucede entonces?

Es muy probable que esté dejando objetos perdidos en memoria (cierto alentamiento)..

Muchas gracias de antemano,
Mne9
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Liberar memoria con ADO

Publicado por Rolando (115 intervenciones) el 12/04/2008 00:40:07
Haber :

esto en tu modulo o onde sea

FUNCTION OBTIENEDATOS () OBTIENE RECORDSET
dim rs as ADODC.recorset
dim cmd as ADODC.comand
---
----
---
set OBTIENEDATOS = rs
set rs = nothing
set cmd = nothing
END FUNCTION


en tu formulario :

En tu formulario

dim rsGRID as ADODC.recorset

set rsGRID = OBTIENEDATOS

ahora trabajas con tu rsGRID ...EN TU FORMULARIO ...Y CUANDO LE DES UN
Set rsGRID = Nothing esta variable se descargara y morira.
tambien si lo mantenienes se descargara automatico al cerrar el formulario ....
de esa manera no he tenido ningun problem de sobrecargar la memoria..

bueno espero te sirva..

bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Liberar memoria con ADO

Publicado por Mne9 (11 intervenciones) el 12/04/2008 04:36:23
Ok', si tu dicess....
Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar