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

28/01/2014

0

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

Responder

Posts

28/01/2014

Mr. White

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..
Responder

Gostei + 0

28/01/2014

Moabe Oliveira

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
Responder

Gostei + 0

28/01/2014

Marcos Saffran

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.
Responder

Gostei + 0

28/01/2014

Moabe Oliveira

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
Responder

Gostei + 0

28/01/2014

Marcos Saffran

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;
Responder

Gostei + 0

29/01/2014

Moabe Oliveira

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 ...
Responder

Gostei + 0

29/01/2014

Marcos Saffran

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.
Responder

Gostei + 0

29/01/2014

Moabe Oliveira

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 ..
Responder

Gostei + 0

29/01/2014

Marcos Saffran

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.
Responder

Gostei + 0

29/01/2014

Moabe Oliveira

quando coloco esse comando SQL que ativo o adoSQL , ja some tudo do dbgrid
Responder

Gostei + 0

29/01/2014

Marcos Saffran

Por favor poste o resultado quando você executa o comando:
select * from Membros where DataNascimento
Responder

Gostei + 0

29/01/2014

Moabe Oliveira

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

Gostei + 0

29/01/2014

Marcos Saffran

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.
Responder

Gostei + 0

29/01/2014

Moabe Oliveira

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 ..
Responder

Gostei + 0

29/01/2014

Douglas

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?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar