Ver Mensaje Individual
  #7  
Antiguo 03-06-2020
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Reputación: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
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 * '); {Es necesario traer todos los campos? }
       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(); //Fecha actual
       ParamByName('F2').AsValue:=Date(); //Fecha actual

       ParamByName('V1').AsValue:=1000; //Valor mínimo
       ParamByName('V2').AsValue:=1000; //Valor máximo

       ParamByName('Concepto').AsValue:='%' +UpperCase(Edit2.Text)+ '%') ;

       {Abrir consulta...}

Saludos cordiales
Responder Con Cita