Ajuda - Busca - Membros - Calendário
Versão Completa: Seleção Entre Datas
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
pixe00
E ai galera, bom vou tentar deixar o mais explicado possivel:

estou usando o Delphi e o Access para fazer uma aplicação basica porem estou precisando fazer uma consulta de uma data qualquer que estaja entre uma data inicial e uma data final o nome da minha tabela é "atendimento" e o campo que quero pesquisar é "Data_Ped".

Gostaria de saber tudo se que for possivel o tipo do campo no access tudo...plz.

Espero que me der um help. obrigado.
maikel
Bom dia...
Cara... não sei no acess é o mesmo que no firebird..... mas no Firebird eu faço assim:
select * from atendimento where data_ped between('01/09/2006' and '06/09/2006')

não sei se vai funcionar... mas tenta ai... vai que resolve... ou tenta procurar a sintaxe correta do between para o Acess...

Att
pixe00
Opa cara. beleza.....

testei aqui mas não deu certo, tipo se tiverem outra soluçao. valeu.
Micheus
utilizando o exemplo do maikel:
'select * from atendimento where data_ped between #01/09/2006# and #06/09/2006#'

O Access utiliza o sustenido (#) como delimitador de datas.

mas pode tentar também:
'select * from atendimento where data_ped between :DtInicial and :DtFinal'
e passar os parâmetros utilizando seu dataset (você não postou qual está utilizando...) tipo:
Query.ParamByName('DtIncial').AsDateTime := StrToDate('01/09/2006');
Query.ParamByName('DtFinal').AsDateTime := StrToDate('06/09/2006');

se for componente ADO, se não me engano é um pouco diferente:
adoquery1.Parameters.ParamByName('DtIncial').AsDateTime := StrToDate('01/09/2006');
pixe00
e ai galera bom, comecei a testar tudo que era possivel fazer foi aí então que tive a ideia de fazer com que o proprio access construisse o comando sql pra mim foi ei então que descobrir meu erro, o access ele quando vai tratar de datas ele inverte a posiçao do mês com os dias ficando assim "MM/DD/YYYY", então o que eu fiz foi apenas criar uma funçao pra inverter a data dentro do Delphi e logo apos colocar a data invertida no comado sql... o comando esta logo a baixo:


CODE

    DM.ADODataSet1.Active := False;
    DM.ADODataSet1.CommandText := '';
    DM.ADODataSet1.CommandText := 'SELECT * FROM atendimento WHERE ((Data_Ped>#'+ data1 +'#) AND (Data_Ped<#'+ data2 +'#))';
    DM.ADODataSet1.Active := True;



PODE FECHAR ESSE POST
Micheus
Esperimente o uso de parâmetros, acredito que você não terá que se preocupar com este detalhe.

Observe também que talvez você deva utilizar >= e <= para filtrar o período com as datas passadas inclusas.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.