Das Datenmodule kannst Du in die Hauptanwendung legen oder auch in eine DLL (so was mache ich es).
Die exe und die DLLs kompilierst Du mit der Option "Dynamic runtime packages", dann musst Du zwar die BPLs mitinstallieren, aber die DLLs und die exe können sich die variables der BPLs sharen. Bestes Beispiel die Variable Application des Objekts TApplication, welches von Delphi automatisch erzeugt wird in einem Programm. Kompilierst Du ohne runtime packages, dann haben die exe und jede DLL eine eigene Instanz. Mit Runtime Packages nutzen sie eine gemeinsame und von der DLL aus hast Du zum Bsp zugriff auf Application.MainForm, um Deine MDI-Fenster ins Hauptfenster zu bekommen ohne Stress.
DB-Verbindung kann man damit auch sharen zwischen allen beteiligten. Man erstellt sie in einem Datenmodul (was auch in einer BPL liegen kann) und alle können Zugriff drauf haben. Das geht so, dass Du ein Package Projekt machst, das Datenmodul hinzufügst und die Datenbank-Verbindungs-Komponente drauflegst. Die BPL wird urspünglich von der exe geladen und das Datenmodul erzeugt.
Die DLLs binden einfach das Datenmodul ein, kompilieren es auch als dynamisches Laufzeitpaket ein und somit arbeiten sie mit der gleichen instanz wie die exe und schon haben alle den Zugriff auf die DB-Verbindung.
_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw