Al hacer Transaction->Commit / Rollback se cierra la transacción.
Luego de esto hay que hacer un Transaction->StartTransaction.
Supongo que tienes una sola transacción asociada a la base de datos.
En ese caso, suelo poner antes de hacer e Query código que inicia la transacción si está cerrada.
Código:
if (not Auxiliar->Transaction.InTransaction) then
Auxiliar->Transaction.StartTransaction;
Auxiliar->Close();
Auxiliar->SQL->Text = "SELECT GEN_ID(ID_" + (fFacturas->Tag == 1 ? (String)"Tiquet" : (fFacturas->Tag == 2 ? (String)"Albaran" : (String)"Factura")) +
", 0) Valor FROM RDB$DATABASE";
Auxiliar->Open();