Creo que los filtros están mal...
Que sentido tiene evaluar un campo fecha como mayusculas: upper(fechaEmision)?
Que sentido tiene evaluar un campo float como mayusculas : Upper(ImporteRecibo)?
Te sugiero que si estas filtrando por fecha utilices las siguientes estrategias, siendo f1 y f2 parámetros introducidos a la consulta:
1) FechaEmision = :f1
2) FechaEmision between :f1 and :f2 es equivalente a (FechaEmision>=:f1 and FechaEmision<= :f2)
3) FechaEmision <= :f1
4) FechaEmision >= :f1
En cuanto a filtro de valores numéricos (enteros, reales), sigue la misma sugerencia:
1) ImporteRecibo=:v1
2) ImporteRecibo between :v1 and :v2 es equivalente a (ImporteRecibo>=:v1 and ImporteRecibo<= :v2)
3) ImporteRecibo<=:v1
3) ImporteRecibo>=:v1
Dicho lo anterior, te propongo la siguiente modificación:
Parámetros de la consulta:
f1 y f2: Valores de fechas mínimo y máxima
v1 y v2: Valores de importe mínimo y máximo
Código SQL
[-]
SQL := 'SELECT * FROM HISTORICO WHERE ' +
'(FECHAEMISION Between :f1 and :f2) OR ' +
'(IMPORTERECIBO Between :v1 and v2) OR ' +
'(Upper(CONCEPTO) LIKE ' + '''%' +UpperCase(Edit2.Text)+ '%'') ' +
' ORDER BY FechaEmision';
CONSULTA;
Código Delphi
[-]
SQL.Add('SELECT * ');
SQL.Add('FROM HISTORICO WHERE ');
SQL.Add('(FECHAEMISION Between :f1 and :f2) OR');
SQL.Add('(IMPORTERECIBO Between :v1 and v2) OR');
SQL.Add('(Upper(CONCEPTO) LIKE :concepto');
SQL.Add(' ORDER BY FechaEmision');
ParamByName('F1').AsValue:=Date(); ParamByName('F2').AsValue:=Date();
ParamByName('V1').AsValue:=1000; ParamByName('V2').AsValue:=1000;
ParamByName('Concepto').AsValue:='%' +UpperCase(Edit2.Text)+ '%') ;
Saludos cordiales