RE:fechas introducidas por el usuario
Bien...
Lo primero es escribir el string de tu query, yo usaré un ejemplo:
Select * from tabla where fecha >=:P1 and fecha <=:P2
Donde P1 y P2 son los nombres de los parámetros, luego en la propiedad Params del query da doble clic y selecciona el primer parámetro (P1) y en la propiedad DataType ponle el tipo Date y en la propiedad ParamType ponle Input, haz lo mismo con P2...
Lo siguiente es pasar los parámetros, imagino que lo harás mediante un botón...
Query.Close;
Query.ParamByName('P1').Value := fDesde.Text;
Query.ParamByName('P2').Value := fHasta.Text;
Query.Open;
Donde fDesde y fHasta son los objetos que contendrán las fechas...
Otra forma de hacerlo (esta es la que uso) es mandando el query por programación:
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(' Select * from Tabla '+
' Where Fecha >= '+#39+FDesde.Text+#39+') and'+
' (Fecha <= '+#39+FHasta.Text+#39+');
Query.Open;
Ahí tienes dos maneras, espero que te sirva de algo mi ayuda, cualquier duda puedes consultarme....