GARANTIR DESCONTO

Fórum Problemas com Cláusula Between #186586

06/10/2003

0

Pessoal, alguém poderia me dizer o que estou fazendo de errado nesse SQL. As vezes quando informo um range para as datas tipo 01/10/2003 e 06/10/2003 ele encontra 2 registros que são os registros que estão cadastrados no meu banco e com a data de cadastro entre esse range. Se informo um range inicial como 01/06/2003 e um final 06/10/2003 ele não encontra nada... Segue o código para análise.
Obrigado

qryArmas.Active := False;
qryArmas.SQL.Clear;
qryArmas.SQL.Add(´SELECT OCORRENCIA, ANO, DESCRICAO, DATA, ´);
qryArmas.SQL.Add(´CASE (ORIGEM) ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 0 THEN ´PL´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 1 THEN ´1ºDP´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 2 THEN ´2ºDP´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 3 THEN ´3ºDP´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 4 THEN ´4ºDP´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 5 THEN ´5ºDP´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 6 THEN ´DDM´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 7 THEN ´DIG´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 8 THEN ´DISE´ ´ + ´ ´);
qryArmas.SQL.Add(´END AS ORIGEM, ´ + ´ ´);
qryArmas.SQL.Add(´CASE (PROCEDIMENTO) ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 0 THEN ´Boletim de Ocorrência´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 1 THEN ´Flagrante´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 2 THEN ´Termo Circunstânciado´ ´ + ´ ´);
qryArmas.SQL.Add(´END AS PROCEDIMENTO, ´ + ´ ´);
qryArmas.SQL.Add(´CASE (MARCA) ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 0 THEN ´ASTRA´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 1 THEN ´BERETTA´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 2 THEN ´BLACK HILLS´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 3 THEN ´BOITO´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 4 THEN ´CARAMURU´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 5 THEN ´CASTELO´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 6 THEN ´CBC´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 7 THEN ´CCI´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 8 THEN ´COLT´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 9 THEN ´CZ´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 10 THEN ´DEFENSOR´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 11 THEN ´DETETIVE´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 12 THEN ´DOBERMAN´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 13 THEN ´ELDORADO´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 14 THEN ´FABRICAÇÃO CASEIRA´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 15 THEN ´FEDERAL´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 16 THEN ´FN´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 17 THEN ´HO´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 18 THEN ´HORNADY´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 19 THEN ´IMBEL´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 20 THEN ´INA´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 21 THEN ´ITAJUBA´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 22 THEN ´ITALO´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 23 THEN ´LERAP´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 24 THEN ´LUGGER´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 25 THEN ´MAUSER´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 26 THEN ´MIL´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 27 THEN ´OH´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 28 THEN ´PASPER´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 29 THEN ´REMINGTON´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 30 THEN ´ROSSI´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 31 THEN ´SM´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 32 THEN ´SMITH & WESSON´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 33 THEN ´TANKE´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 34 then ´TAURUS´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 35 THEN ´URKO´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 36 THEN ´WALTHER´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 37 THEN ´WINCHESTER´ ´ + ´ ´);
qryArmas.SQL.Add(´WHEN 38 THEN ´OUTRAS´ ´ + ´ ´);
qryArmas.SQL.Add(´END AS MARCA ´ + ´ ´);
qryArmas.SQL.Add(´FROM ARMAS ´ + ´ ´);
qryArmas.SQL.Add(´WHERE DATA BETWEEN ´ + #39 + DateToStr(dtpInicio.Date)+ 39 + ´ ´);
qryArmas.SQL.Add(´AND ´ + 39 + DateToStr(dtpFinal.Date) + 39 + ´ ´);
qryArmas.SQL.Add(´ORDER BY OCORRENCIA, ANO, ORIGEM, DESCRICAO, PROCEDIMENTO, MARCA, DATA´);
qryArmas.Active := True;
dbgArmas.Refresh;


Merph

Merph

Responder

Posts

06/10/2003

Leanribas

Qual banco de dados vc usa?


Responder

Gostei + 0

07/10/2003

Merph

Uso o MySql


Responder

Gostei + 0

07/10/2003

Thales

O SQL trabalha no padrão mm/dd/aaaa
Tente algo com isso...


Responder

Gostei + 0

07/10/2003

Fabio.hc

...
qryArmas.SQL.Add(´WHERE DATA BETWEEN ´ + #39 + DateToStr(dtpInicio.Date)+ 39 + ´ ´); 
qryArmas.SQL.Add(´AND ´ + 39 + DateToStr(dtpFinal.Date) + 39 + ´ ´); 
...


Quando vc monta a instrução SQL deste jeito a data tem que ser Mês/Dia/Ano.

...
qryArmas.SQL.Add(´WHERE DATA BETWEEN :datainicio ´); 
qryArmas.SQL.Add(´AND  :datafinal´)
...; 

qryArmas.params[0].value:=dtpInicio.Date;
qryArmas.params[1].value:=dtpFinal.Date.Date;


Quando vc passa parametro a data tem que ser Dia/Mês/Ano.


Responder

Gostei + 0

07/10/2003

Merph

VALEU GENTE.... Deu certo
Obrigado a todos pela atenção... :D

...
qryArmas.SQL.Add(´WHERE DATA BETWEEN ´ + #39 + DateToStr(dtpInicio.Date)+ 39 + ´ ´); 
qryArmas.SQL.Add(´AND ´ + 39 + DateToStr(dtpFinal.Date) + 39 + ´ ´); 
...
Quando vc monta a instrução SQL deste jeito a data tem que ser Mês/Dia/Ano.
...
qryArmas.SQL.Add(´WHERE DATA BETWEEN :datainicio ´); 
qryArmas.SQL.Add(´AND  :datafinal´)
...; 

qryArmas.params[0].value:=dtpInicio.Date;
qryArmas.params[1].value:=dtpFinal.Date.Date;
Quando vc passa parametro a data tem que ser Dia/Mês/Ano.



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar