Déjame entender. Si en
Código Delphi
[-]
If RecordCount > 0 then
DataBaseError ('Código de Proveedor Duplicado') ;
pones un punto de corte en la primera línea, ¿estás diciendo que al examinar el valor de RecordCount éste es igual a 1 y aún así la ejecución no continúa en la segunda línea?
De ser así sería verdaderamente sorprendente ya que más que un error de los IBX sería un error del compilador, cosa que veo muy difícil.
Según leo en la ayuda, un IBSQL es del tipo de datasets cuya propiedad RecordCount sólo devuelve los registros que hayas recorrido hasta el momento, es decir, mientras no recorras todos los registros, la propiedad no devuelve el número correcto. Esto no es un error sino que simplemente, por el tipo de acceso al servidor no hay manera de conocer el dato hasta no tener todos los registros. Esto lo puedes entonces solucionar simplemente llamando a IBSQLExisteProv.Next antes de consultar el valor de RecordCount.
// Saludos