
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

