Mag sein, dass ich so kurz vor Feierabend das Problem nicht so ganz richtig verstanden habe, falls dem so ist: ignoriert meine Antwort
Ich habe bei mir in der Applikation außer DBGrids keine Datensensitiven Felder, das Füllen der entsprechenden Eingabemasken mache ich per Hand und auch das Schreiben in die Datenbank wird von Hand erledigt. Damit können bei mir die Datenbanken im Hintergrund ruhig geschlossen werden, die entsprechenden Informationen würden immer noch angezeigt. Zudem habe ich für jedes Fenster eine (oder ggf mehrere) eigene Instanz der notwendigen Datenmodule. D.h. meine Such-Fenster sind vollkommen unabhängig von den Eingabe-Fenstern. Soll ein entsprechender Datensatz aus der Suche bearbeitet werden, wird das Eingabe-Fenster geöffnet, die entsprechenden Datenbanken (TTable.GotoCurrent) und laufen von dann an wieder unabhängig voneinander.
Die einzigen Datenbank-Elemente die global für alle Tabellen sind, sind bei mir die Connections zur Datenbank. Diese sind auch nicht in den Datenmodulen hinterlegt, sondern in einem global verfügbaren Datenmodul. Die anderen Datenmodule greifen dann auf dieses Datenmodul zu. Damit halte ich die Anzahl der Connections klein, spare die Zeit für den Verbindungsaufbau (geschieht beim Start der Applikation und endet erst mit Beenden der Applikation).
Achso: verwende die Komponenten und Datenbank-Server von Advantage Database Server. Dort sind Connections und Tables bzw. Querys getrennte Komponenten)