Fórum fazer uma consulta por data, DD/MM #467403

20/01/2014

0

estou com dificuldades de fazer uma consulta entre duas datas, não estou conseguindo colocar a editmask só com o dia e mês __/__,
e também não estou conseguindo fazer a consulta , alguem pode me ajudar ?
Moabe Oliveira

Moabe Oliveira

Responder

Posts

20/01/2014

Douglas

Moabe, para colocar o MaskEdit com dia e mês você terá que colocar o seguinte formato abaixo
na propriedade editMask.
!99/99/;1;_ 

Agora só não entendi a questão da consulta entre datas. O que você quer fazer?
Responder

Gostei + 0

20/01/2014

Moabe Oliveira

certo, consegui colocar a mask DD/MM, agora quero fazer uma consulta entre duas datas, e mostrar no dbgrid os cadastros que tem aquela data
estou usando esse código mais nao ta dando certo
begin
  With DataModule1.Table_Membros Do
Begin
ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between  :DATAI AND :DATAF ');
ConsultaAniver.Parameters.ParamByName('datai').Value := datetimepicker1.date;
ConsultaAniver.Parameters.ParamByName('dataf').Value := datetimepicker2.date;
ConsultaAniver.open;
Responder

Gostei + 0

20/01/2014

Douglas

certo, consegui colocar a mask DD/MM, agora quero fazer uma consulta entre duas datas, e mostrar no dbgrid os cadastros que tem aquela data
estou usando esse código mais nao ta dando certo
begin
  With DataModule1.Table_Membros Do
Begin
ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between  :DATAI AND :DATAF ');
ConsultaAniver.Parameters.ParamByName('datai').Value := datetimepicker1.date;
ConsultaAniver.Parameters.ParamByName('dataf').Value := datetimepicker2.date;
ConsultaAniver.open;


Acerte o seu código para seguinte forma abaixo:

ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between  :DATAI AND :DATAF ');
ConsultaAniver.ParamByName('datai').Value := QuotedStr(datetimepicker1.date);
ConsultaAniver.ParamByName('dataf').Value := QuotedStr(datetimepicker2.date);
ConsultaAniver.open;


Aguardo o seu feedback.
Responder

Gostei + 0

20/01/2014

Moabe Oliveira

o código roda, mas quando mando clico no button da o erro ' tipo de dados imcompativel na expressão de criterio'
Responder

Gostei + 0

20/01/2014

Douglas

Moabe, o erro acontece quando você da o Open na query?
Responder

Gostei + 0

20/01/2014

Moabe Oliveira

coloquei esse código em um button, quando clico no button pra executar esse código, da esse erro
Responder

Gostei + 0

20/01/2014

Leandro Chiodini

Boa tarde,

A sua data na tabela?
ela esta formatada para "DD/MM"

caso nao, provavelmente esta dando erro pq
temos uma data DD/MM/YYYY e uma DD/MM

O oracle retorna erro, entao acredito que deva ser isso..
mais O amigo Douglas, acredito que seja a melhor pessoa para a resposta.

:D

att,
Chiodini
Responder

Gostei + 0

20/01/2014

Moabe Oliveira

é, na tabela no access esta como DD/MM
Responder

Gostei + 0

20/01/2014

Douglas

Uma correção no código, desculpe pelo erro.

ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between  :DATAI AND :DATAF ');
ConsultaAniver.ParamByName('datai').Value := QuotedStr(FormatDateTime('dd/mm/yyyy', datetimepicker1.date));
ConsultaAniver.ParamByName('dataf').Value := QuotedStr(FormatDateTime('dd/mm/yyyy', datetimepicker2.date));
ConsultaAniver.open;


Moabe, agora só temos que saber em que momento esta ocorrendo este erro.
Responder

Gostei + 0

20/01/2014

Moabe Oliveira

agora esta dando erro nessa linha
procedure TForm_ConAniver.SpeedButton2Click(Sender: TObject);
begin
  With Datasource1 Do
Begin
ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between  :DATAI AND :DATAF ');
//ConsultaAniver.ParamByName('datai').Value := QuotedStr(FormatDateTime('dd/mm/yyyy', datetimepicker1.date));
ConsultaAniver.ParamByName('dataf').Value := QuotedStr(FormatDateTime('dd/mm/yyyy', datetimepicker2.date));
ConsultaAniver.open;
end;


no lugar de datetimepicker1.date , eu queria usar o edit mask, só com o dia e mês
Responder

Gostei + 0

20/01/2014

Douglas

é, na tabela no access esta como DD/MM


Moabe, como esta neste formato acima no Access então tente da forma abaixo:

Uma correção no código, desculpe pelo erro.

ConsultaAniver.Close;
ConsultaAniver.SQL.CLEAR;
ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE DataNascimento between  :DATAI AND :DATAF ');
ConsultaAniver.ParamByName('datai').Value := QuotedStr(FormatDateTime('dd/mm', datetimepicker1.date));
ConsultaAniver.ParamByName('dataf').Value := QuotedStr(FormatDateTime('dd/mm', datetimepicker2.date));
ConsultaAniver.open;
Responder

Gostei + 0

20/01/2014

Moabe Oliveira

descupe-me pelo erro eu, na tabela do access, esta como DD/MM/YYYY, mais quero fazer a consulta apenas pelo dia e mês
Responder

Gostei + 0

21/01/2014

Douglas

Moabe, então a sua consulta será da seguinte forma abaixo:

  ConsultaAniver.Close;
  ConsultaAniver.SQL.CLEAR;
  ConsultaAniver.SQL.ADD('SELECT * FROM Membros WHERE MONTH(DataNascimento) BETWEEN  :MESDATAI AND :MESDATAF ');
  ConsultaAniver.SQL.ADD('AND DAY(DataNascimento) BETWEEN  :DIADATAI AND :DIADATAF ');
  ConsultaAniver.ParamByName('MESDATAI').Value := QuotedStr(FormatDateTime('mm', datetimepicker1.Date));
  ConsultaAniver.ParamByName('MESDATAF').Value := QuotedStr(FormatDateTime('mm', datetimepicker2.date));
  ConsultaAniver.ParamByName('DIADATAI').Value := QuotedStr(FormatDateTime('dd', datetimepicker1.date));
  ConsultaAniver.ParamByName('DIADATAF').Value := QuotedStr(FormatDateTime('dd', datetimepicker2.date));
  ConsultaAniver.open;


OBS: Agora só tem um detalhe. Fazendo desta forma você vai resultar tudo que estiver entre o período do mês e dia
que você esta consultando independente do ano.

Espero ter chegado no resultado da sua pergunta aguardo feedback.
Responder

Gostei + 0

21/01/2014

Moabe Oliveira

nesse ultimo código que voc postou tive que colocar 'parameters' pra rodar, e outra questão, eu queria que pesquisasse pelo maskedit no lugar do datetimepicker
Responder

Gostei + 0

21/01/2014

Fabio Cardoso

Amigo qual banco de dados voce esta usando??
Responder

Gostei + 0

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

Aceitar