Checar data e conferir aniversários

28/01/2006

Opa galera! tranquilo? :P
Minha primeira mensagem! rs... bem, sou novo nesse forum, sou novo em delphi, portanto, ignorem perguntas bestas por favor! rsrs :wink:

Galera, acontece o seguinte, eu tenho uma tabela com o campo Nascimento, do tipo Date... (Paradox 7) então, eu precisaria de ajuda, pois nao consegui fazer uma rotina pra checar qual é a data de hj, por exemplo: (28/1) e checar se nesse dia tem algum aniversariante... ja fiz tudo, startup, tudo, só falta isso! :oops:

um grande abraço...
se alguem quiser alguma dica sobre clusters, ou redes, só perguntar, sou novo em delphi, minha área mesmo é redes e Phyton, hehehe! :o

abraços a todos!!! :lol:


Icarus

Respostas

28/01/2006

Edilcimar

if table1.fieldbyname(´DATAANIVERSARIO´).value = Date then
showmessage(´HOJE TEM ANIVERSARIANTE´);


Responder Citar

28/01/2006

Icarus

awn.. :shock:
sinto-me IDIOTA por ser algo tão simples e nao pensei, eu até exportei o valor do dia e do mes pra umas variáveis, veja só como fui idiota! rs...
muito obrigado pela dica!

bem, e como seria o código se eu tivesse que mostrar o nome do cara e o telefone dele? ehehehe... espero nao estar sendo muito exigente!
abraços!!! :lol:


Responder Citar

28/01/2006

Icarus

Opa galera! :D

Consegui resolver o problema, bem, para os amigos que também tem esse problema, abaixo vai o código: :wink:

procedure TF_APLICACAO.FormCreate(Sender: TObject); var StrDia,Col1:string; Ano, Mes, Dia: word; begin if table1.fieldbyname(´email´).value = Date then showmessage(´Olá! Hoje temos aniversariantes! Por favor, clique em OK para conhecê-los!´); DecodeDate(Now,Ano,Mes,Dia); StrDia:=IntToStr(Dia); Query.SQL.Clear; Query.SQL.Add(´Select Nome,email,Extract( day From nascimento) From agenda ´); Query.SQL.Add(´Where Extract( Day From nascimento)=´ + StrDia ); Query.Active:= True; Query.Next;


Qualquer duvida pessoal, só chamar! meu email é sergiofigueras [NOSPAM] gmail.com :)

um grande abraço a todos e obrigado pela atenção! :wink:


Responder Citar

28/01/2006

Icarus

tava bom demais pra ser vero! :roll:

bem.. descobri que com o meu código seleciona-se só os que nasceram no dia X, esquecendo dos meses... :oops:

vou tentar um jeito criativo...
mas... meio caminho andado! :D


Responder Citar

28/01/2006

Icarus

Opa galera... to aqui, perturbando novamente...

Bem, to com outro problema, eu nao sei como selecionar o mes e o dia no mesmo extract, alguem pode me ajudar?
abraços! :)


Responder Citar

28/01/2006

Thomaz_prg

Olá amigo... primeiro, algumas observações:

O amigo Edilcimar colocou o seguinte:

if table1.fieldbyname(´DATAANIVERSARIO´).value = Date then
showmessage(´HOJE TEM ANIVERSARIANTE´);

Mas como seu campo DataAniversario é do tipo date, ela também armazena o ano, sendo inviável para mostrar a lista de aniversariantes.

Bom, existem N formas de se fazer isso, mas a mais simples é usando uma Query, que ficaria assim:

uses DateUtils


Qry.Close;
Qry.SQL.Text := ´Select * From Tabela´;
Qry.SQL.Add( ´Where´);
Qry.SQL.Add( ´Extract(Month from DataNasc) = :Mes´); 
Qry.SQL.Add( ´and Extract( Day from DataNasc ) = :Dia´ );  //**
Qry.ParambyName(´Dia´).Value := DayOf(Date);  //**
Qry.ParamByName(´Mes´).Value := MonthOf(Date);  
Qry.Open;

If Qry.RecordCount > 0 then 
  showmessage(´Existem Aniversariantes´);


Note que coloquei em 2 linhas um comentário [b:60e630013c] //** [/b:60e630013c], pois se você quiser os aniversariantes, avaliando o dia/mÊs deixe como está, mas se você quer os aniversariantes do mês, tire as linhas com comentários.
Note também a adição da unit DateUtils, que está disponível a partir do delphi 6 se não me engano. Se seu delphi for anterior a este, use a função DecodeDate.


Responder Citar

28/01/2006

Edilcimar

é realmente esqueci do ano!


Responder Citar

28/01/2006

Martins

Olá amigo... primeiro, algumas observações: O amigo Edilcimar colocou o seguinte: if table1.fieldbyname(´DATAANIVERSARIO´).value = Date then showmessage(´HOJE TEM ANIVERSARIANTE´); Mas como seu campo DataAniversario é do tipo date, ela também armazena o ano, sendo inviável para mostrar a lista de aniversariantes. Bom, existem N formas de se fazer isso, mas a mais simples é usando uma Query, que ficaria assim:
uses DateUtils


Qry.Close;
Qry.SQL.Text := ´Select * From Tabela´;
Qry.SQL.Add( ´Where´);
Qry.SQL.Add( ´Extract(Month from DataNasc) = :Mes´); 
Qry.SQL.Add( ´and Extract( Day from DataNasc ) = :Dia´ );  //**
Qry.ParambyName(´Dia´).Value := DayOf(Date);  //**
Qry.ParamByName(´Mes´).Value := MonthOf(Date);  
Qry.Open;

If Qry.RecordCount > 0 then 
  showmessage(´Existem Aniversariantes´);
Note que coloquei em 2 linhas um comentário [b:5856442801] //** [/b:5856442801], pois se você quiser os aniversariantes, avaliando o dia/mÊs deixe como está, mas se você quer os aniversariantes do mês, tire as linhas com comentários. Note também a adição da unit DateUtils, que está disponível a partir do delphi 6 se não me engano. Se seu delphi for anterior a este, use a função DecodeDate.


Muito bom [b:5856442801]thomaz_prg[/b:5856442801], acredito que ele não vá remover as linhas onde tem comentário, ele poderia ao invés disso implementar mais ainda, podendo mostrar apenas os aniversariantes do dia ou do mês em curso.

Valew!!

Boa sorte!!!


Responder Citar

28/01/2006

Icarus

Opa pessoal! :D

Muito obrigado, problema resolvido! :D

bom final de semana a todos! :wink:


Responder Citar