consulta DD/MM (não consegui mais respostas no outro tópico)

Delphi

28/01/2014

desculpem-me pelo inconveniente, mas o código que consegui no outro tópico rodou e deu um resultado, mas não é o q quero ainda, não veio com os anos passados, só em 2014
bom: estou com esse código no ADOQuery

select * From Membros
where DataNascimento

e esse código no botão de consulta

ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between :DATAI AND :DATAF ');
ConsultaAniver.parameters.ParamByName('datai').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('dataf').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.open;

mais só esta me retornando o dia e mês exato, da consulta, sendo que quero que: seja entre a data pesquisada,
tipo: entre 24/04 e 24/05, e mostre as datas independente do ano!
Moabe Oliveira

Moabe Oliveira

Curtidas 0

Respostas

Mr. White

Mr. White

28/01/2014

Não sei se é erro de digitação, mas os dois parâmetros estão preenchidos com a mesma caixa de texto

...
ConsultaAniver.parameters.ParamByName('datai').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('dataf').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.open;


Se :datai e :dataf forem iguais só vai trazer o dia exato mesmo..
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

então, mais quando eu faço a consulta ai, com o programa rodando, digito o intervalo tipo de um mes, e nao ta vindo, quando vem, parece só os de 2014, coloquei outros anos e não aparece resultado na consulta
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

Olá Moabe,

altere a sua select para algo assim:

SELECT * FROM Membros WHERE MONTH(DataNascimento) between :MES_DATAI AND :MES_DATAF and DAY(DATANASCIMENTO) between :DIA_DATAI AND :DIA_DATAF

e depois posta ela aqui para vermos como ficou.
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

fiz a modificação que me falou o código ficou assim:
ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE MONTH(DataNascimento) between :MES_DATAI AND :MES_DATAF and DAY(DATANASCIMENTO) between :DIA_DATAI AND :DIA_DATAF ');
ConsultaAniver.parameters.ParamByName('MES_DATAI').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('DIA_DATAI').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('MES_DATAF').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit2.text));
ConsultaAniver.parameters.ParamByName('DIA_DATAF').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit2.text));
ConsultaAniver.open;


mas, agora n ta mostrando mais nenhum resultado.. :s
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

tente com as seguintes alterações:
	
ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE MONTH(DataNascimento) between :MES_DATAI AND :MES_DATAF and DAY(DATANASCIMENTO) between :DIA_DATAI AND :DIA_DATAF ');
ConsultaAniver.parameters.ParamByName('MES_DATAI').Value := FormatDateTime('mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('DIA_DATAI').Value := FormatDateTime('dd', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('MES_DATAF').Value := FormatDateTime('mm', StrToDate(Jvmaskedit2.text));
ConsultaAniver.parameters.ParamByName('DIA_DATAF').Value := FormatDateTime('dd', StrToDate(Jvmaskedit2.text));
ConsultaAniver.open;
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

Bom dia Marcos Alfredo Saffran, eu tentei com o código que colocou, e ainda não esta dando nenhum resultado na busca .. fiz vários testes ...
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

Bom dia Moabe,

tente executar a seguinte select diretamente no seu banco de dados:

SELECT * FROM Membros WHERE MONTH(DataNascimento) between 01 AND 04 and DAY(DATANASCIMENTO) between 01 AND 15;

deve retornar todos que nasceram entre os meses de janeiro e abril, e com dia de nascimento entre os dias 01 e 15.

informe se deu resultado ou se deu erro.
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

como executo direto no banco ? tou usando access adosql e um data source, com o comando digitado no adosql: select * from Membros where DataNascimento, ja aparece todos os aniversariantes no dbgrid, antes de rodar o programa, então acho q ta normal ..
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

como executo direto no banco ? tou usando access adosql e um data source, com o comando digitado no adosql: select * from Membros where DataNascimento, ja aparece todos os aniversariantes no dbgrid, antes de rodar o programa, então acho q ta normal ..


ok, então coloque o comando no adosql e veja o que aparece no dbgrid

SELECT * FROM Membros WHERE MONTH(DataNascimento) between 01 AND 04 and DAY(DATANASCIMENTO) between 01 AND 15

senão você terá que digitar o comando dentro do access.
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

quando coloco esse comando SQL que ativo o adoSQL , ja some tudo do dbgrid
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

Por favor poste o resultado quando você executa o comando:
select * from Membros where DataNascimento
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

eu já até comentei.. desde o inicio uso esse select,
aparece todos os cadastros
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

eu já até comentei.. desde o inicio uso esse select,
aparece todos os cadastros


eu só pedi para vermos se há algum detalhe na sua tabela que pode nos ajudar a resolver o seu problema.
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

então, no código inicial que postei , trazia os resultados certos dos dias e mes, só que só trazia os que tinham o ano 2014, e quero que mostre independente do ano ..
GOSTEI 0
Douglas

Douglas

28/01/2014

então, no código inicial que postei , trazia os resultados certos dos dias e mes, só que só trazia os que tinham o ano 2014, e quero que mostre independente do ano ..

Moabe, já tínhamos concluído este assunto. Mas analisando a conversa no tópico, a minha pergunta é, a sua tabela de consulta contém dados com ano inferior a 2014?
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

Douglas Claudio, depois eu até pedi desculpas, lá no primeiro post, e peço novamente, foi falha minha, vi os resultados e n analisei!
sim tem de vários anos, mais quando realizo a consulta, só vem do ano de 2014
GOSTEI 0
Douglas

Douglas

28/01/2014

Moabe,
Qual é o código que você esta utilizando hoje, para efetuar a consulta.
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between :DATAI AND :DATAF ');
ConsultaAniver.parameters.ParamByName('datai').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('dataf').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit2.text));
ConsultaAniver.open;
GOSTEI 0
Douglas

Douglas

28/01/2014

ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between :DATAI AND :DATAF ');
ConsultaAniver.parameters.ParamByName('datai').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit1.text));
ConsultaAniver.parameters.ParamByName('dataf').Value := FormatDateTime('dd/mm', StrToDate(Jvmaskedit2.text));
ConsultaAniver.open;


Moabe, como esta o formato da data no banco. Qual é o banco de dados que você esta utilizando?
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

Estou utilizando o Access, e o Formata esta em Data/Hora
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

Moabe, dê uma lida no arquivo abaixo e veja se te ajuda:

http://www.sergio.pro.br/trabalhos/05_comandos_para_consultas_via_sql_no_ms_access.pdf
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

deei uma lida, e achei uma solução pra mim, mas novamente preciso da ajuda de vocês,
criei um outro campo na tabela com nome DiaAniv, quero pegar o valor do JvDBDateEdit1 e salvar no campo DiaAniv sem o ano:(DD/MM)! ai vai ficar mais fácil a busca..
podem me ajudar com isso ?
desde já muito obrigado pela ajuda até aqui .!
GOSTEI 0
Marcos Saffran

Marcos Saffran

28/01/2014

Moabe, não uso esse componente, mas você pode usar o DayOf(DateTime) para pegar o dia e o MonthOf(DateTime) para pegar o mês.
GOSTEI 0
Douglas

Douglas

28/01/2014

deei uma lida, e achei uma solução pra mim, mas novamente preciso da ajuda de vocês,
criei um outro campo na tabela com nome DiaAniv, quero pegar o valor do JvDBDateEdit1 e salvar no campo DiaAniv sem o ano:(DD/MM)! ai vai ficar mais fácil a busca..
podem me ajudar com isso ?
desde já muito obrigado pela ajuda até aqui .!


Moabe, no tópico que você tinha aberto anteriormente, eu tinha lhe explicado como pegar o dia e mês usando a função Copy lembra?
GOSTEI 0
Moabe Oliveira

Moabe Oliveira

28/01/2014

Lembro sim, só que não me trouxe os resultados independente do ano, por isso achei essa solução, tou estudando sobre isso na net pra ver se consigo..
GOSTEI 0
Carlos Amaral

Carlos Amaral

28/01/2014

Olá, boa tarde !!

Pesquise a função DATEPART no ACCESS.

Um abraço,

Carlos
GOSTEI 0
POSTAR