MyDatamodule.Table1.First;
if not Assigned(MyDatamodule) then exit;
if not Assigned(MyDatamodule.Table1) then exit;
MyDatamodule.Table1.First;
nel FormDestroy lancio if assigned(form1) then form1:=nil (oppure form1.free)
n linea di massima in autocreate io preferisco tenerci solo il form principale e poi creo/distruggo a seconda delle necessità da dentro il form.
Nell'evento OnCreate del form puoi tranquillamente (1) creare il datamodule principale e (2) testare la connessione del DB e, se fallisce, lanci Application.Terminate (che se non ricordo male dovrebbe richiamare OnDestroy del form).
Nell'OnDestroy del form, distruggi il datamodule con:
if Assigned(MyDataModule) then
MyDataModule.Free;
Non so se è il modo migliore ma è il modo che mi risulta più chiaro personalmente e che mi permette di fare tutto.