Hola ecfisa, gracias por tu tiempo.
He estado probando lo que me propones pero me ocurre lo mismo que poniendo directamente escrita la consulta en el filtro (Filter:='Principal=true'

, cuando el valor es false me saca el registro correctamente pero para true no, no se porque ocurre, de momento lo tengo solucionado con lo que comentaba antes:
Código Delphi
[-]
ClientDataSet1.Filter:='Not principal=False';
Pero que me parece extrañísimo el comportamiento.
Seguiré mirando a ver que puede ser, y si puedes arrojar algo de luz al asunto te lo agradezco.
Saludos.