P.S.: Ich nehme Datenänderungen mit Usereingaben grundsätzlich über ClientDataSets vor, um Schreibtransaktionen so kurz wie möglich zu halten. Man klebt so nicht direkt an der Datenbank, kann aber alle Vorteile datengebundener Steuerelemente mitnehmen. Länger offene Lesetransaktionen sind alle "read only".
Kannst du dann nicht einfach, bevor das ClientDataset ein Update an die Datenbank gibt, oder vor einem Refresh prüfen, ob die Connestion noch steht und die dann ggf. aufmachen? Oder sogar selber die Connection nach jedem gebrauch schließen und wieder öffnen, dann hast du selber die Kontrolle.