El problema, como ya mencionaron
egostar y
kuan-yiu, muy posiblemente se deba al tipo de datos. Cuando usas Query1.Parameters.ParamByName('fecha').value, value es un
variant, esto es, una variable que no lleva un tipo de datos específico, de manera que el objeto Query1 no sabe en qué formato mandar el dato al motor de bases.
El problema con la solución que plantea
kuan-yiu -me parece- es que no es válida en tu caso, porque tú estás usando
Parameters y no
Params. Parameters es una colección de
TParameter en lugar de TParam, y el problema es que,
a diferencia de este último, TParameter no cuenta con los métodos AsDate, AsString, AsInteger, etc.
Entonces, lo que debes hacer es indicar explícitamente el tipo de datos del parámetro:
Código Delphi
[-]
Query1.Parameers.ParamByName('fecha').DataType := ftDate;
Query1.Parameters.ParamByName('fecha').value;
// Saludos