Fórum data do nascimento #179329
03/09/2003
0
oi pessoal. olha so o meu problema., fiz um sistema, para um cadastro de 100 familias onde tem o campo data de nascimento, mas acontece o seguinte, eu gostaria, que quando a pessoa digitasse no DBEdit a data de nascimento, aparecesse em um Edit1.text em baixo do DBEdit, a idade do cara, meio que, 21 anos e 12 dias.... algo assim, comparando a data do nascimento com a data do sistema....alguem sabe?
obrigado
obrigado
Sergio Luiz
Curtir tópico
+ 0
Responder
Posts
03/09/2003
Bacalhau
Bom, nós podemos operar com as datas directamente e obter valores inteiros. Tenta isto:
var Diferenca : integer;
anos : integer;
dias : integer;
// calculo a diferença em dias
Diferenca := table.fieldbyname(´Hoje´).asdatetime -
table.fieldbyname(´Dt Nascimento´).asdatetime;
// calculo os anos
anos := diferenca div 365;
// calculo os dias
dias diferenca mod 365;
O resto é colocar os resultados no local que pretendes
abraço
bacalhau
var Diferenca : integer;
anos : integer;
dias : integer;
// calculo a diferença em dias
Diferenca := table.fieldbyname(´Hoje´).asdatetime -
table.fieldbyname(´Dt Nascimento´).asdatetime;
// calculo os anos
anos := diferenca div 365;
// calculo os dias
dias diferenca mod 365;
O resto é colocar os resultados no local que pretendes
abraço
bacalhau
Responder
Gostei + 0
03/09/2003
Aristodemo
function IdadeAtual(Nasc : TDate): Integer;
Var AuxIdade, Meses : String;
MesesFloat : Real;
IdadeInc, IdadeReal : Integer;
begin
AuxIdade := Format(´¬0.2f´, [(Date - Nasc) / 365.6]);
Meses := FloatToStr(Frac(StrToFloat(AuxIdade)));
if AuxIdade = ´0´ then
begin
Result := 0;
Exit;
end;
if Meses[1] = ´-´ then
begin
Meses := FloatToStr(StrToFloat(Meses) * -1);
end;
Delete(Meses, 1, 2);
if Length(Meses) = 1 then
begin
Meses := Meses + ´0´;
end;
if (Meses <> ´0´) And (Meses <> ´´) then
begin
MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30.47)
end
else
begin
MesesFloat := 0;
end;
if MesesFloat <> 12 then
begin
IdadeReal := Trunc(StrToFloat(AuxIdade)); // + MesesFloat;
end
else
begin
IdadeInc := Trunc(StrToFloat(AuxIdade));
Inc(IdadeInc);
IdadeReal := IdadeInc;
end;
Result := IdadeReal;
end;
Abraços...
Var AuxIdade, Meses : String;
MesesFloat : Real;
IdadeInc, IdadeReal : Integer;
begin
AuxIdade := Format(´¬0.2f´, [(Date - Nasc) / 365.6]);
Meses := FloatToStr(Frac(StrToFloat(AuxIdade)));
if AuxIdade = ´0´ then
begin
Result := 0;
Exit;
end;
if Meses[1] = ´-´ then
begin
Meses := FloatToStr(StrToFloat(Meses) * -1);
end;
Delete(Meses, 1, 2);
if Length(Meses) = 1 then
begin
Meses := Meses + ´0´;
end;
if (Meses <> ´0´) And (Meses <> ´´) then
begin
MesesFloat := Round(((365.6 * StrToInt(Meses)) / 100) / 30.47)
end
else
begin
MesesFloat := 0;
end;
if MesesFloat <> 12 then
begin
IdadeReal := Trunc(StrToFloat(AuxIdade)); // + MesesFloat;
end
else
begin
IdadeInc := Trunc(StrToFloat(AuxIdade));
Inc(IdadeInc);
IdadeReal := IdadeInc;
end;
Result := IdadeReal;
end;
Abraços...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)