se debe repetir porque lo comparas con el detalle de tu factura
from FACTURAS,
DETALLES, PRESTA
y si una factura tiene 5 productos, pues te va a aparecer 5 veces el numero de factura
lo que sucede es que es en la tabla detalle donde tu compruebas sobre el parametro per, en lugar de hacerlo unicamente sobre la tabla factura
Código:
DM.IBQuery.SQL.Add('select distinct * from FACTURAS, PRESTA where FACTURAS.PRESTA=PRESTA.ID_PRESTA and PRESTA.PERSONAL=:per and ANULADA = ''0'' ');
DM.IBQuery.ParamByName('per').AsInteger:= DM.IBDataSetID_PERSONAL.Value;