Hola
Los componentes IBX (Que son los que uso) tienen una propiedad
Intransaction que indica si ya esta iniciada una transaccion.
Código Delphi
[-]if not IBTransaction1.intransaction then
IBTransaction1.startTransaction;
Supongo que los componentes que usas deben tener una propiedad similar.