Fórum Data de Aniversário #335390

29/12/2006

0

Bom dia!

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

Jonpline

Responder

Posts

29/12/2006

Fortaum

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


Responder

Gostei + 0

29/12/2006

Jonpline

Amigo, eu tentei assim:

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.


Responder

Gostei + 0

29/12/2006

Fortaum

- Foi mal... no delphi 5 não existe essa unit com essas funções..
- Não trabalhei com paradox, mas tenta isso na SQL direto no banco:
extract(day from nomedocampodatadatabela )
extract(month from nomedocampodatadatabela )


Responder

Gostei + 0

29/12/2006

Jonpline

Então, eu tentei, mas só funciona um extract por SQL...
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.


Responder

Gostei + 0

29/12/2006

Jonpline

Desculpe-em, tentei assim:

Select
extract(day from Datanasci ) From Cliente and
extract(month from Datanasci ) From Cliente


Responder

Gostei + 0

29/12/2006

Fortaum

Select
*
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!


Responder

Gostei + 0

30/12/2006

Brasidata

Amigo, eu tentei assim: 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´;


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!


Responder

Gostei + 0

30/12/2006

Jonpline

Valeu pela diga amigo, mas na biblioteca do delphi 5 não tem este DateUtils


Responder

Gostei + 0

31/12/2006

Aroldo Zanela

Colega,

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;



Responder

Gostei + 0

02/01/2007

Jose Almeida

Um exemplo simples e didático.

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;


Responder

Gostei + 0

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

Aceitar