no me habia fijado bien en tu codigo, pero puede ser que no le has puetso las comillas al query en las fechas, por lo regular para comparar fechas en un query se necesita estra en tre comillas, entonces el codigo seri algo asi:
adbcp.SQL.Add('where compras.fecha>='+''''+datetostr(fi.date)+''''+' And compras.fecha<='+''''+datetostr(ff.date)+'''');
espero que te sirva, aunque no se por que estas manejando paradox con ADO, pero creo que algo de lo que te mande