le estas pasando un entero y espera un datetime...
prueba de hacer
Código Delphi
[-]
q.sql.text := 'select * from tabla where data =' + FormatDateTime('yyyy/mm/dd',data);
o bien usar los parametros, tal como indicabas
Código Delphi
[-]
q.sql.text := 'select * from tabla where data = :fecha';
q.parambyname(':fecha').Asdatetime := datetimepicker1.Date;
PD: el formato usado varia segun que servidor SQL uses : Access, #mm/dd/aaaa#, sql server #dd/mm/aaaa#, etc...