Delphi sql using coalesce

2

In delphi I have TIBQuery:

select * from TB_PRECO
where
coalesce(DT_CAMPANHA,'') = coalesce(:DT_CAMPANHA,coalesce(DT_CAMPANHA,'')) and
coalesce(DT_VECTOPRECO,'') >= coalesce(:DT_ATUAL, coalesce(DT_VECTOPRECO,'')) and
DESC_GRUPO = coalesce(:DESC_GRUPO, DESC_GRUPO) and
TP_CAMPANHA = :TP_CAMPANHA and
UF_CAMPANHA = coalesce(:UF_CAMPANHA, UF_CAMPANHA) and
DESC_PRODUTO LIKE coalesce(:DESC_PRODUTO, DESC_PRODUTO) and
COD_PRODUTO = coalesce(:COD_PRODUTO, COD_PRODUTO)
order by DESC_PRODUTO

pass the following parameters:

IBQCons_Preco.ParamByName('COD_PRODUTO').Value := Unassigned;
IBQCons_Preco.ParamByName('DESC_PRODUTO').Value := '%%';
IBQCons_Preco.ParamByName('DESC_GRUPO').Value := 'INSETICIDAS';
IBQCons_Preco.ParamByName('DT_ATUAL').Value := StrToDate('23/03/2018');
IBQCons_Preco.ParamByName('TP_CAMPANHA').Value := 'REAIS';
IBQCons_Preco.ParamByName('DT_CAMPANHA').Value := StrToDate('18/05/2018');
IBQCons_Preco.ParamByName('UF_CAMPANHA').Value := Unassigned;

Running the program works. But this is when I try to run on IbExpert:

select * from TB_PRECO
where
coalesce(DT_CAMPANHA,'') = coalesce('18.05.2018',coalesce(DT_CAMPANHA,'')) and
coalesce(DT_VECTOPRECO,'') >= coalesce('23.03.2018', coalesce(DT_VECTOPRECO,'')) and
DESC_GRUPO = coalesce('INSETICIDAS', DESC_GRUPO) and
TP_CAMPANHA = 'REAIS' and
UF_CAMPANHA = coalesce(null, UF_CAMPANHA) and
DESC_PRODUTO LIKE coalesce('%%', DESC_PRODUTO) and
COD_PRODUTO = coalesce(null, COD_PRODUTO)
order by DESC_PRODUTO

The sql does not return me a record. Now if I do this:

select * from TB_PRECO
where
DT_CAMPANHA = '18.05.2018' and
DT_VECTOPRECO >= '23.03.2018' and
DESC_GRUPO = 'INSETICIDAS' and
TP_CAMPANHA = 'REAIS' and
UF_CAMPANHA = coalesce(null, UF_CAMPANHA) and
DESC_PRODUTO LIKE '%%'
and COD_PRODUTO = coalesce(null, COD_PRODUTO)
order by DESC_PRODUTO

SQL returns me the same record as the first SQL in TIBQuery. Someone has gone through something similar.

Solution:  In sql use CAST (), example: Cast ('18 .05.2018 'as Date).

    
asked by anonymous 23.03.2018 / 20:53

0 answers