Hola Marcos.
Al parecer esto se debe a que la primera instancia del módulo de datos no es realmente destruida en AbrirCerrar_Modulo_DmExisten. Y cuando llamas de nuevo a este procedimiento se crea una segunda instancia, quedando la primera todavía asociada con los objetos de la interfaz de usuario. Parte del problema está en el uso del valor 0, cuando el procedimiento requiere el valor 2 (se recomienda el uso de constantes con nombre para evitar estas discrepancias).
Pero, además, debes asegurarte de no destruir el módulo de datos mientras haya instancias de formularios relacionadas con él. Pues la destrucción de una instancia de módulo de datos para en seguida crear otra, aunque la asignes a la misma variable global (DmExisten), no hará que los formularios existentes se reasocien en automático al nuevo módulo (quedarían más bien sin conjuntos de datos asociados por haber sido destruidos éstos al liberar el primer módulo de datos).
Espero te ayude a solucionar el problema.
Un abrazo modulado.
Al González.
