Calcular Idade a partir da data armazenada na tabela.

19/06/2008

1

Olá Pessoal!

Estou precisando de uma ajuda pra conseguir colocar meu aplicativo pra calcular a idade dos alunos cadastrados.
O campo esta armazenado numa tabela chamada CADASTRO e nome do campo é [b:3cfc9a9ae5]CAD_DATANASC[/b:3cfc9a9ae5] q esta como Alpha.
Eu estou precisando conseguir fazer o sistema calcular a idade atual de acordo com a data, ou seja, se no dia [b:3cfc9a9ae5]01/Jan/08[/b:3cfc9a9ae5] eu verificar o cadastro de um aluno que faz aniversário no dia [b:3cfc9a9ae5]02/Jan/08[/b:3cfc9a9ae5], a idade dele deve aparecer como 18, e se eu verificar este cadastro novamente no dia [b:3cfc9a9ae5]03/Jan/08[/b:3cfc9a9ae5], a idade tenha se atualizado, ou seja, apareça como 19. Isso é possível?
Eu até tentei criar uns Edits, mas ta complicado.
Preciso desta informação para poder gerar um Relatório de acordo com a idade das pessoas cadastradas e um outro com a Relação dos aniversariantes do Mês, mostrando a idade de cada um.
Se alguém tiver alguma dica de como fazer, ficaria muito grato pela ajuda.

Grande abraço e muito obrigado.


Responder

Posts

19/06/2008

Edilcimar

Do jeito que você quer é impossível, afinal de contas se no dia 02/jan/08 (dia do aniversário) a pessoa tem 18 anos, no dia 03/jan/08 (um dia depois do aniversário), esta pessoa não pode ter aumentado 1 ano


Responder

19/06/2008

Altingon

Fiz um exemplo bem tosco mas que funciona veja se é isso que você quer e aprimore ele

procedure TForm1.Button1Click(Sender: TObject);
var
  ano_ini, mes_ini, dia_ini,
  ano_fim, mes_fim, dia_fim:word;
begin
  DecodeDate(strtodate(´30/05/1982´), ano_ini, dia_ini, dia_ini);
  DecodeDate(now, ano_fim, mes_fim, dia_fim);
  ShowMessage(inttostr(ano_fim-ano_ini));
end;



Responder

19/06/2008

Altingon

Não esta funcionando!!!...deixa ver se consigo


Responder

19/06/2008

Altingon

Achei a solução aqui mesmo no forum:

http://forum.devmedia.com.br/viewtopic.php?t=86413&highlight=

Codigo do usuario andersongaucho

function CalcIdade(DataMenor, DataMaior: TDateTime): String;
var
  vAno1, vAno2, vDia1, vDia2, vMes1, vMes2: Word;
  vAnos, vMeses, vDias: Integer;
begin
  DecodeDate(DataMenor, vAno1, vMes1, vDia1);
  DecodeDate(DataMaior, vAno2, vMes2, vDia2);

  vAnos := vAno2 - vAno1;
  vMeses := vMes2 - vMes1;
  vDias := vDia2 - vDia1;

  if (vDias < 0) then
  begin
    Dec(vMeses);
    vDias := vDias + 30;
  end;

  if (vMeses < 0) then
  begin
    Dec(vAnos);
    vMeses := vMeses + 12;
  end;

  Result := InttoStr(vAnos) + ´a, ´ + InttoStr(vMeses) + ´m, ´ + InttoStr(vDias) + ´d´;
end; 



Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira