pixe00
06/09/2006 - 00:05
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
06/09/2006 - 08:42
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
06/09/2006 - 12:11
Opa cara. beleza.....
testei aqui mas não deu certo, tipo se tiverem outra soluçao. valeu.
Micheus
06/09/2006 - 13:19
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
06/09/2006 - 13:22
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
06/09/2006 - 13:49
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.