Pesquisa entre datas em sql server

04/01/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!´);


Firekiller_am

Respostas

04/01/2006

Wesleyavila

Qual a base de dados que vc usa !?


Responder Citar

04/01/2006

Firekiller_am

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


Responder Citar

04/01/2006

Romulocpd

Veja.

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


Responder Citar

04/01/2006

Firekiller_am

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


Responder Citar

04/01/2006

Romulocpd

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


Responder Citar

04/01/2006

Emerson

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

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!´);



Responder Citar

04/01/2006

Macario

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:


Responder Citar

04/01/2006

Firekiller_am

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


Responder Citar

04/01/2006

Firekiller_am

blz emerson.en vou testar aqui depois digo se funcionou


Responder Citar