Hace poco he tenido una experiencia con DBExpress y francamente me parece (puedo estar confundido) que su "variedad" de excepciones es realmente pobre: EDatabaseError.
Así, tu código jamás entrará al IF, pues la excepción que se eleva no es (ni por chiste) es un EIBInterbaseError.
Me veré obligado a profundizar un poco en el tema, pero por ahora, tengo la impresión que DBX apesta (al menos en este aspecto), pues no hay forma de saber el número de error nativo o algún código que nos oriente sobre cual fue el error que ocurrió cuando se tira contra un servidor SQL, lo que nos deja en la incomoda situación de procesar los mensajes de error y cruzar los dedos para que dichos mensajes nunca cambien en el motor (lo cual francamente es terriblemente improbable)
Hasta luego.
