Fórum Data de Aniversário #335390
29/12/2006
0
Estou com uma dúvida, e gostaria que pudessem me ajudar. Eu tenho um cadastro de clientes e gostaria que quando eu abrisse essa tela, me desse uma mensagem dizendo se tem aniversariantes nesse dia. Bom, o problema é que não estou conseguindo comparar apenas o dia e o mês, já que o campo que eu tenho é data de nascimento.
Por favor, como posso fazer isso?
´
Utilizo o Delphi 5 e tabela Paradox 7.
Desde já, muito obrigado!
Jonpline
Curtir tópico
+ 0Posts
29/12/2006
Fortaum
dia, mes: word;
begin
mes:= MonthOf(DatadeNascimento);
dia:= DayOf(DatadeNascimento);
end;
- Dessa forma vc retira o dia e mês da data de nascimento e faz as comparações necessárias...
Gostei + 0
29/12/2006
Jonpline
var
dia, mes: word;
begin
mes:=Monthof.Ddados.Tcliente(DataNasci).AsDATetime;
dia:=DayOf.Ddados.Tecliente(DataNasci).AsDateTime;
Mas o Delphi apresenta o seguinte erro:
´Undeclared identfier: ´Monthof´;
Eu gostaria de saber se preciso declarar algo na sesão uses ou se estou fazendo alguma coisa errada.
Desde já agradeço.
Gostei + 0
29/12/2006
Fortaum
- Não trabalhei com paradox, mas tenta isso na SQL direto no banco:
extract(day from nomedocampodatadatabela )
extract(month from nomedocampodatadatabela )
Gostei + 0
29/12/2006
Jonpline
Não existe outro comando que faça isso?
Desculpe estar perguntando de novo, mas já pesquisei e não acho a solução em lugar algum.
Desde já, muito grato.
Gostei + 0
29/12/2006
Jonpline
Select
extract(day from Datanasci ) From Cliente and
extract(month from Datanasci ) From Cliente
Gostei + 0
29/12/2006
Fortaum
*
From
Cliente
where
extract(day from Datanasci ) = DiaqueVoceQuerFiltar
and
extract(month from Datanasci ) = MesqueVoceQuerFiltar
Uma crítica construtiva:
Estude SQL pois sua dificuldade foi em montar o script!
Valeu!
Gostei + 0
30/12/2006
Brasidata
A sintaxe correta é:
var dia, mes: word; begin mes:=Monthof(Ddados.Tcliente.FieldByName(´DataNasci´).AsDateTime); dia:=DayOf(Ddados.Tcliente.FieldByName(´DataNasci´).AsDateTime); end;
Ou ainda:
var dia, mes: word; begin mes:=Monthof(Ddados.TclienteDataNasci.AsDateTime); dia:=DayOf(Ddados.TclienteDataNasci.AsDateTime); end;
Dependendo da forma como você se referencia à coluna [b:14b0107618]DataNasci[/b:14b0107618]
Em ambos os casos você deverá declarar [b:14b0107618]DateUtils[/b:14b0107618] na cláusula [b:14b0107618]uses[/b:14b0107618] da Unit
Bom trabalho!
Gostei + 0
30/12/2006
Jonpline
Gostei + 0
31/12/2006
Aroldo Zanela
Esta unit foi originalmente concebida pelos autores da RxLib. No caso das funções cidadas, são obtidas facilmente em qualquer versão Delphi 32.
Veja as implementações:
function DayOf(const AValue: TDateTime): Word; var LYear, LMonth: Word; begin DecodeDate(AValue, LYear, LMonth, Result); end; function MonthOf(const AValue: TDateTime): Word; var LYear, LDay: Word; begin DecodeDate(AValue, LYear, Result, LDay); end;
Gostei + 0
02/01/2007
Jose Almeida
Na tabela TabNomes, temos os campos Nome e Nasc.
A procedure abaixo seleciona os aniversariantes
do dia de hoje, se houver.
type
procedure AniDia;
procedure Button1Click(Sender: TObject);
................................
implementation
procedure TForm1.AniDia;
var
Dia,Mes:string;
AA,MM,DD: word;
begin
DecodeDate(Now,AA,MM,DD);
Dia:=IntToStr(DD);
Mes:=IntToStr(MM);
Query1.SQL.Clear;
Query1.SQL.Add(´Select*From TabNomes ´);
Query1.SQL.Add(´Where Extract(Month From Nasc)=´+Mes+´and Extract(Day From Nasc)=´+Dia);
Query1.SQL.Add(´Order By Nasc´);
Query1.Active:= True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AniDia;
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)