Warum benutzt du denn die Ereignisse so wie du sie nutzt?
OnCreate --> Sachen, die im Formularobjekt immer vohanden sind, erzeugen (passiert einmal im Lebenszyklus des Formulars)
OnShow --> Vorgänge ausführen, die bei jeder Anzeige des Formulars passieren sollen (passiert bei jedem Anzeigen durch Show/ShowModal)
OnActivate --> Vorgänge ausführen, die jedesmal beim Aktivieren des Formulars (z.B. durch Anklicken) passieren sollen (passiert ggf. immer wieder während das Formular lebt)
Für mich liest sich das so, als ob entweder alles in OnShow gehört oder du in OnShow die DB erzeugst / initialisierst und dir dann eine Message schickst, in deren Behndlung du dann die Verbindung aufbaust. Das eignet sich dann, wenn du die Verbindung erst machen willst nachdem das Formular schon sichtbar ist.