GARANTIR DESCONTO

Fórum Filtro por data #345142

27/08/2007

0

Pessoal,

Preciso fazer um filtro por data, mas está dando erro. Estou utilizando um componente MaskEdit cuja data que desejo filtrar será digitada. Porém, logo no primeiro dígito aparece uma mensagem de erro. O banco utilizado é Access e tanto o campo da tabela quanto o componente TMaskEdit possuem a máscara ´00/00/0000;0;´. Agradeço quem puder me ajudar nessa questão.

Segue abaixo o código:

procedure TFrmPesquisa.MskEdtDatNasChange(Sender: TObject);
var
Data: TDateTime;
begin
DmSeguros.TbSegurados.IndexName := ´DATNAS´;
Data := strtodate(MskEdtDatNas.Text); // O erro ocorre aqui!!!
with QryPesquisa do
begin
QryPesquisa.Close;
QryPesquisa.Sql.Clear;
QryPesquisa.Sql.Add(´Select * from Segurados Where DatNas = :Data Order By NomSeg´);
QryPesquisa.ParamByName(´Data´).AsDate := strtodate(MskEdtDatNas.Text);
QryPesquisa.Open;
if QryPesquisa.IsEmpty then
MessageDlg(´Não existem dados.´, mtInformation, [mbOk], 0);
end;
end;


Sgrandini

Sgrandini

Responder

Posts

28/08/2007

Daykas

Var
Inicio: String;
Final: String;
begin
If Datetimepicker2.Date < Datetimepicker1.Date Then
begin
ShowMessage(´Intervalo de datas inválido, a data inicial é maior que a data final!´);
Datetimepicker2.Date := Datetimepicker1.Date;
end
Else
begin
Inicio := DateToStr(Datetimepicker1.Date);
Final := DateToStr(Datetimepicker2.Date);
query1.Close;
query1.SQL.Clear;
query1.SQL.Text := ´SELECT * FROM boleto WHERE dtpagto >=:pInicial and dtpagto<=:pFinal ORDER BY dtpagto ASC´;
query1.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
query1.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
query1.Open;
messagedlg(IntToStr(query1.RecordCount)+´ registros encontrados no filtro,mtinformation,[mbok],0);
end;


Divirta-se ai amigo!


Responder

Gostei + 0

29/08/2007

Sgrandini

Obrigada daykas pela ajuda, mas eu não utilizo período de datas com o componente DateTimePicket. Eu uso apenas um componente MaskEdit, onde o usuário deverá digitar a data (data nascimento), que após o clique num botão, mostrará no DBGrid somente as pessoas que possuírem a data digitada no componente. É isso que não estou conseguindo resolver.


Responder

Gostei + 0

29/08/2007

Daykas

Var
dt_nasc: String;
begin
dt_nasc := maskedit1.text;
query1.Close;
query1.SQL.Clear;
query1.SQL.Text := ´SELECT * FROM mailing_contato WHERE dt_nasc >=:pdt_nasc order by nome asc´;
query1.ParamByName(´pdt_nasc´).AsDateTime := StrToDate(dt_nasc);
query1.Open;
showmessage(´Registros: ´ + IntToStr(query1.RecordCount));


Divirta-se!!!


Responder

Gostei + 0

01/09/2007

Sgrandini

Obrigada daykas pela ajuda. Consegui resolver de outra forma, mas o seu código me foi e será ainda muito útil.

Obrigada mais uma vez.


Responder

Gostei + 0

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

Aceitar