Array
(
)

Pesquisa entre datas em sql server

Firekiller_am
   - 04 jan 2006

Ola comunidade delphiana tenho um pequena duvida aqui.

Tenho um programa de chamados com alguns registros como testes e preciso fazer uma tela de pesquisa entre datas.

uso ado (addconetin,adoquery e datasource)

tenho dois maskedtis e um botao onde vou colocar a query de pesquisa, e quero ter os resultados em um dbgrid.

estou usando a query abaixo mais quando clico no botão nao aparece nada no grid e nem da erro..

if (strtodate(maskedit2.text)>=strtodate(maskedit1.text)) then
begin
If fdm.qrFiltroData.Active = True then;
fdm.qrFiltroData.sql.clear;
fdm.qrFiltroData.sql.add(´select * from chamado´);
fdm.qrFiltroData.sql.add(´where data between ´ + QuotedStr(maskedit1.text) + ´ and ´ + QuotedStr(maskedit2.text));
fdm.qrFiltroData.open;
end
else
showmessage(´Data inválida!´);


Wesleyavila
   - 04 jan 2006

Qual a base de dados que vc usa !?


Firekiller_am
   - 04 jan 2006

Uso sql server e ado como esta no post blz...


Romulocpd
   - 04 jan 2006

Veja.

Tente fazer um FORMAT para ele ficar no formato yyyy-mm-dd.


Firekiller_am
   - 04 jan 2006

romulocpd vc pode me dar exemplo pois nao sou muito esperiente em delphi ainda fera..


Romulocpd
   - 04 jan 2006

Aqui nao tenho o Delphi por isso a função formatdatetime poderá estar errada:
Serie mais ou menos assim:

dm.qrFiltroData.sql.add(´where data between ´ + QuotedStr(FormatDateTime(maskedit1.text,´YYYY-MM-DD´)) + ´ and ´ + QuotedStr(FormatDateTime(maskedit2.text,´YYYY-MM-DD´)));

Desta forma ele ficará com o formato, mas veja a sintaxe da função FormatDateTime.

Vlw


Emerson
   - 04 jan 2006

evite o uso de instruções ´concatenadas´. prefira parâmetros para esse caso:

#Código

dataini := strtodate(maskedit1.text);
datafim := strtodate(maskedit2.text);

if datafim >= dataini then
with fdm.qrFiltroData do
begin
close;
sql.clear;
sql.add(´select * from chamado´);
sql.add(´where data between :dataini and :datafim´);
parambyname(´dataini´).asdate := dataini;
parambyname(´datafim´).asdate := datafim;
open;
end
else
showmessage(´Data inválida!´);



Macario
   - 04 jan 2006

Olá realmente pode ser o formato da data, pois o SQL SERVER 2000, quando instalado, traz como default o formato em ingles(MMDDAAAA),
voce deve alterar a configuração do usuário no qual usa para ter acesso, para o language Portuguese (Brazil), para então o banco adotar as configurações regionais do windows.

Lembrando que não somente a data esta em formato diferente do que usamos habitualmente mas sim como o separador decimal.


Espero quer ajude.
:arrow:


Firekiller_am
   - 04 jan 2006

blz emerson.en vou testar aqui depois digo se funcionou...


Firekiller_am
   - 04 jan 2006

blz emerson.en vou testar aqui depois digo se funcionou