Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/07/2008, 15:06
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Cerrar Conexiones

Hola!

Los objetos Recordset y Connection tienen el método Close, que cierran la conexión y liberan los recursos que hubiesen reservado, y no usa parámetros.

Lo único que debes tener en cuenta es que si por cualquier razón no has inicializado un objeto de estos tipos, no podrás cerrarlo (no estaría abierto), y te saltará un error interceptable.

Lo suyo es que cuando vayas a cerrar un recordset, lo hagas de esta forma:

Código:
If Not <recordset> Is Nothing Then Call <recordset>.Close
En tu caso, puedes poner al final de tu función RecuperaConsulta:

Código:
    If Not rstGeneral Is Nothing Then Call rstGeneral.Close
    If Not cntReal Is Nothing Then Call cntReal.Close

    Set rstGeneral = Nothing
    Set cntReal = Nothing
Esto te cerrará el recordset, si se ha inicializado, y después la conexión, si también se ha inicializado. Recuerda cerrar siempre de abajo a arriba en la jerarquía (un objeto Recordset se inicializa a partir de uno Connection, si cierras primero el Connection puede darte problemas). Establecer a Nothing una variable de objeto no es necesario por lo general si se utiliza Close, pero es una buena práctica de programación indicarlo en lugar de dejárselo al compilador.

En general casi todos los objetos o procedimientos que tienen un método Open u Openloquesea, tienen el Close para finalizar su conexión y dejar el sistema limpito.

No obstante, ten en cuenta que abrir y cerrar recordsets y conexiones es un proceso muy pesado, y si haces un uso intensivo de funciones como esta, tu aplicación puede volverse muy lenta. Te aconsejo que intentes siempre reducir al máximo el número de aperturas y cierres.