Como faço pra retornar a idade em anos apartir da idade de nascimento.
Obrigado, aguardo!!!
Retornar idade!!! (RESOLVIDO!!!)
-
- Mensagens: 110
- Registrado em: Setembro 26th, 2011, 11:54 am
- Contato:
Retornar idade!!! (RESOLVIDO!!!)
Editado pela última vez por Dimmy Angelo em Outubro 9th, 2011, 11:53 am, em um total de 2 vezes.
-
- Mensagens: 26
- Registrado em: Julho 12th, 2011, 9:46 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Retornar idade!!!
Colega escreva está function no formulario Rotinas.pas
function CalculaIdade(DataIni, DataFim : TDateTime) : string;
var Idade : String;
iDia, iMes, iAno, fDia, fMes, fAno : Word;
nDia, nMes, nAno : Double;
begin
DecodeDate(DataIni,iAno,iMes,iDia);
DecodeDate(DataFim,fAno,fMes,fDia);
nAno := fAno - iAno;
if nAno > 0 then
if fMes < iMes then nAno := nAno - 1
else if(fMes = iMes)and(fDia < iDia)then nAno := nAno - 1;
if fMes < iMes then
begin
nMes := 12 - (iMes-fMes);
if fDia < iDia then nMes := nMes - 1;
end
else if fMes = iMes then
begin
nMes := 0;
if fDia < iDia then nMes := 11;
end
else if fMes > iMes then
begin
nMes := fMes - iMes;
if fDia < iDia then nMes := nMes - 1;
end;
nDia := 0;
if fDia > iDia then nDia := fDia - iDia;
if fDia < iDia then nDia := (DataFim-IncMonth(DataFim,-1))-(iDia-fDia);
Result := '';
if nAno = 1 then Result := AjustarStr(FloatToStr(nAno),3)+ ' Ano '
else if nAno > 1 then Result := AjustarStr(FloatToStr(nAno),3)+ ' Anos ';
if nMes = 1 then Result := Result + FloatToStr(nMes)+ ' Mês '
else if nMes > 1 then Result := Result + FloatToStr(nMes)+ ' Meses ';
if nDia = 1 then Result := Result + FloatToStr(nDia)+ ' Dia '
else if nDia > 1 then Result := Result + FloatToStr(nDia)+ ' Dias ';
end;
Exemplo: Idade := CalculaIdade(DataNacto, DatadoDia);
function CalculaIdade(DataIni, DataFim : TDateTime) : string;
var Idade : String;
iDia, iMes, iAno, fDia, fMes, fAno : Word;
nDia, nMes, nAno : Double;
begin
DecodeDate(DataIni,iAno,iMes,iDia);
DecodeDate(DataFim,fAno,fMes,fDia);
nAno := fAno - iAno;
if nAno > 0 then
if fMes < iMes then nAno := nAno - 1
else if(fMes = iMes)and(fDia < iDia)then nAno := nAno - 1;
if fMes < iMes then
begin
nMes := 12 - (iMes-fMes);
if fDia < iDia then nMes := nMes - 1;
end
else if fMes = iMes then
begin
nMes := 0;
if fDia < iDia then nMes := 11;
end
else if fMes > iMes then
begin
nMes := fMes - iMes;
if fDia < iDia then nMes := nMes - 1;
end;
nDia := 0;
if fDia > iDia then nDia := fDia - iDia;
if fDia < iDia then nDia := (DataFim-IncMonth(DataFim,-1))-(iDia-fDia);
Result := '';
if nAno = 1 then Result := AjustarStr(FloatToStr(nAno),3)+ ' Ano '
else if nAno > 1 then Result := AjustarStr(FloatToStr(nAno),3)+ ' Anos ';
if nMes = 1 then Result := Result + FloatToStr(nMes)+ ' Mês '
else if nMes > 1 then Result := Result + FloatToStr(nMes)+ ' Meses ';
if nDia = 1 then Result := Result + FloatToStr(nDia)+ ' Dia '
else if nDia > 1 then Result := Result + FloatToStr(nDia)+ ' Dias ';
end;
Exemplo: Idade := CalculaIdade(DataNacto, DatadoDia);
-
- Mensagens: 110
- Registrado em: Setembro 26th, 2011, 11:54 am
- Contato:
-
- Mensagens: 26
- Registrado em: Julho 12th, 2011, 9:46 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Retornar idade!!!
Sim faltou mesmo a rotina para alinhar os resultados numericos.
Caso não queira este alinhamento basta remover a function AjustaStr da Rotina.
function AjustarStr ( str: String; tam: Integer ): String;
begin
while Length ( str ) < tam do
str := ' ' + str;
if Length ( str ) > tam then
str := Copy ( str, 1, tam );
Result := str;
end;
Caso não queira este alinhamento basta remover a function AjustaStr da Rotina.
function AjustarStr ( str: String; tam: Integer ): String;
begin
while Length ( str ) < tam do
str := ' ' + str;
if Length ( str ) > tam then
str := Copy ( str, 1, tam );
Result := str;
end;
-
- Mensagens: 110
- Registrado em: Setembro 26th, 2011, 11:54 am
- Contato:
-
- Mensagens: 110
- Registrado em: Setembro 26th, 2011, 11:54 am
- Contato:
-
- Mensagens: 110
- Registrado em: Setembro 26th, 2011, 11:54 am
- Contato:
Re: Retornar idade!!!
Outra dúvida, como faço para não aparecer 111 antes que seja informada a data de nascimento, quero que aparece em branco ou 0.
Obrigado !!!
Obrigado !!!
Você não está autorizado a ver ou baixar esse anexo.
-
- Mensagens: 26
- Registrado em: Julho 12th, 2011, 9:46 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
Re: Retornar idade!!!
Voce pode testar o campo e caso ele esteja vazio você coloque Result := '';
if TabGlobal.DFLOW.DATA.Conteudo = Date-Date then Result := '' {ou 'Data não Informada'}
else Result := CalculaIdade(TabGlobal.DFLOW.DATA.Conteudo,DataAtual);
if TabGlobal.DFLOW.DATA.Conteudo = Date-Date then Result := '' {ou 'Data não Informada'}
else Result := CalculaIdade(TabGlobal.DFLOW.DATA.Conteudo,DataAtual);
Voltar para “Colaborações/Dicas, Artigos e Truques”
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes