Pues yo creo que te estás liando con algún concepto, porque yo acabo de hacer una prueba y funciona perfectamente, tanto haciendo la comprobación que tu haces como ver si devuelve registros el filtro que me parece más lógica.
Ahora bien tu mencionas un IbDataset, pero luego filtras una tabla, no veo la relación.
Yo he utilizado un IbDaset conectado a un Tdatasource1 y este a una rejilla1 y luego un IbTable conectado a un Tdatasource2 y este a una rejilla2 al aplicar el filtro al IbTable1, la Rejilla2 me muestra solamente 1 registro y el mensaje que me da es que se encontró el registro, la rejilla1 que esta conectada al Ibdataset sigue con todos los registros ya que su propiedas SQL es la que hace que muestre los registros, así que tendrás que aclarar que tiene que ver el IbDataset con lo que propones.
Buen este es el código que como digo funciona sin ningún problema:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
ibTable1.Filtered:=False;
ibTable1.Filter:='Last_Name = '+QuotedStr(Edit1.Text);
ibTable1.Filtered:=True;
if ibTable1.FieldValues['LAST_NAME'] = Edit1.Text then
ShowMessage('Encontrado')
else
ShowMessage('No se encontro ningún Registro');
if IbTable1.RecordCount > 0 then
ShowMessage('Registro Encontrado.')
else
ShowMessage('No se encontro ningún Registro');
end;
Un Saludo.