Pesquisa Entre datas mysql

Delphi

24/03/2018

Boa Noite!
Alguém pode me ajudar com este código:

with dm.Sql_local do
begin
close;
sql.Clear;
sql.Add(''select * from tbl_local'');
sql.Add(''where data between :data_ini and :data_fim '');
sql.Add(''and comboio = "NAO"'');
ParamByName(''data_ini'').Value:=FormatDateTime(''yyyy-mm-dd'',data_ini.date);
ParamByName(''data_fim'').Value:=FormatDateTime(''yyyy-mm-dd'',data_fim.date);
open;

Não há nada de errado com ele, porém quando acrescento esta linha:
sql.Add(''or detalhe = "CAPOTAGEM"'');

A filtragem por data não ocorre.
Abaixo o código integral:

with dm.Sql_local do
begin
close;
sql.Clear;
sql.Add(''select * from tbl_local'');
sql.Add(''where data between :data_ini and :data_fim '');
sql.Add(''and comboio = "NAO"'');
sql.Add(''or detalhe = "CAPOTAGEM"'');
ParamByName(''data_ini'').Value:=FormatDateTime(''yyyy-mm-dd'',data_ini.date);
ParamByName(''data_fim'').Value:=FormatDateTime(''yyyy-mm-dd'',data_fim.date);
open;


Alguém pode me ajudar em dizer o Porquê, de não realizar a filtragem por data.
Adailso Cosme

Adailso Cosme

Curtidas 0

Melhor post

Jerson Boer

Jerson Boer

25/03/2018

Olá Adailso, a sua condição OU refere-se somente a condição alternativa para o "Comboio" ou também para a data? Experimente colocar desta forma:

select * from tbl_local where (data between :data_ini and :data_fim) and (comboio = "NAO" OR detalhe = "CAPOTAGEM")


Separando entre parênteses as condições para que elas não se confundam entre si.
GOSTEI 1

Mais Respostas

Adailso Cosme

Adailso Cosme

24/03/2018

Meu amigo!
Muito obrigado!
Você Salvou o meu projeto!
Deu tudo certo.
Nem o cara que me vendeu o curso soube me dizer o que fazer!
Tenho que fazer várias estatísticas de Saídas de Socorro do Quartel de Bombeiros do Rio de Janeiro e dependia dessa solução.]
Nota 10 pra vc.
GOSTEI 0
Jerson Boer

Jerson Boer

24/03/2018

Que bom que a ajuda foi bem útil.. precisando de alguma ajuda só postar.. abraços
GOSTEI 0
POSTAR