Trucos Asegurarse de cerrar todos los objetos de datos antes de cerrar la aplicación

Si usas varios objetos de datos en tu código (DAO, RDO o ADO), debes asegurarte de cerrar explícitamente todos los recordset, bases de datos y workspaces antes de salir de la aplicación. Aunque los punteros a estos objetos se destruyen automáticamente cuando sales del programa, si te falta cerrar alguno las conexiones a las bases de datos no son liberadas inmediatamente y la memoria asignada a esos objetos no puede ser luego reasignada por el sistema operativo.

Esta es una pequeña rutina que puedes añadir en el evento Form_Unload que cerrará todos los workspaces, bases de datos y recordset de DAO y liberará la memoria reservada para ellos.
Este código funciona si tienes 1, 100 o ninguna conexión abierta.

Private Sub Form_Unload(Cancel As Integer)
    '
    ' *** cerrar los objetos de base de datos
    ' *** y liberar la memoria
    '
    On Error Resume Next
    '
    Dim ws As Workspace
    Dim db As Database
    Dim rs As Recordset
    '
    For Each ws In Workspaces
        For Each db In ws.Databases
            For Each rs In db.Recordsets
                rs.Close
                Set rs = Nothing
            Next
            db.Close
            Set db = Nothing
        Next
        ws.Close
        Set ws = Nothing
    Next
    '
End Sub

Mike Amundsen, http://www.amundsen.com



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com