Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cbpaulosergio

soma anos meses dias

Recommended Posts

Alguem me AJUDE.

tenho uma aplicação de soma de anos e gostaria de saber como eu faço
para quando a soma de meses das averbações forem igual ou superior a 12 meses, ele já transforme em anos e quando os dias forem igual ou superior a 30 dias, transforme automaticamente em meses.

OBS: o resultado ja me dá o resultado correto, mais estou querendo nas averbações tambem

Os codigos da minha aplicação são:





procedure TForm1.BitBtn1Click(Sender: TObject);
Var
Ano, Mes, Dia, Ano1, Mes1, Dia1, Ano2, Mes2, Dia2, AnoA, MesA, DiaA, TotalA, AnoT, MesT, DiaT : Word;
Data1, Data2 :TDateTime;
Resultado : String;

begin
If DateTimePicker1.Date < DateTimePicker2.Date then
begin
Data1 := DateTimePicker1.Date;
Data2 := DateTimePicker2.Date;
end
else
begin
Data1 := DateTimePicker2.Date;
Data2 := DateTimePicker1.Date;
Resultado := 'Falta ';
end;
DecodeDate(Data1, Ano1, Mes1, Dia1);
DecodeDate(Data2, Ano2, Mes2, Dia2);
if Dia2 >= Dia1 Then
begin
Dia := Dia2 - Dia1;
end
else
begin
If Mes2 = 1 then
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
Ano2 := Ano2 - 1;
end
else
begin
If Mes2 = 3 then
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
end
else
begin
If (Mes2 = 5) or (Mes2 = 7) or (Mes2 = 10) or (Mes2 = 12) then
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
end
else
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
end;
end;
end;
end;
If Mes2 >= Mes1 then
begin
Mes := Mes2 - Mes1;
end
else
begin
Mes := Mes2 + 12 - Mes1;
Ano2 := Ano2 - 1;
end;
If Ano2 >= Ano1 then
begin
Ano := Ano2 - Ano1;
end
else
begin
Ano := 0;
end;
If Ano < 2 then
Resultado := Resultado + IntToStr(Ano) + ' Ano, '
else
Resultado := Resultado + IntToStr(Ano) + ' Anos, ';
If Mes < 2 then
Resultado := Resultado + IntToStr(Mes) + ' Mes, '
else
Resultado := Resultado + IntToStr(Mes) + ' Meses, ';
If Dia < 2 then
Resultado := Resultado + IntToStr(Dia) + ' Dia.'
else
Resultado := Resultado + IntToStr(Dia) + ' Dias.';


Edit1.Text := (Resultado);


if EditAnoA1.Text <> '' then
AnoA := StrToInt(EditAnoA1.Text);
if EditAnoA2.Text <> '' then
AnoA := AnoA + StrToInt(EditAnoA2.Text);
if EditAnoA3.Text <> '' then
AnoA := AnoA + StrToInt(EditAnoA3.Text);
if EditAnoA4.Text <> '' then
AnoA := AnoA + StrToInt(EditAnoA4.Text);


if EditMesA1.Text <> '' then
MesA := StrToInt(EditMesA1.Text);
if EditMesA2.Text <> '' then
MesA := MesA + StrToInt(EditMesA2.Text);
if EditMesA3.Text <> '' then
MesA := MesA + StrToInt(EditMesA3.Text);
if EditMesA4.Text <> '' then
MesA := MesA + StrToInt(EditMesA4.Text);


if EditDiaA1.Text <> '' then
DiaA := StrToInt(EditDiaA1.Text);
if EditDiaA2.Text <> '' then
DiaA := DiaA + StrToInt(EditDiaA2.Text);
if EditDiaA3.Text <> '' then
DiaA := DiaA + StrToInt(EditDiaA3.Text);
if EditDiaA4.Text <> '' then
DiaA := DiaA + StrToInt(EditDiaA4.Text);

//Tempo Averbado é jogado no Edit5

Edit5.Text := IntToStr(AnoA)+ ' Ano(s), ' + IntToStr(MesA) + ' Mês(s), '+ IntToStr(DiaA) + ' Dia(s) ';


//Tempo Atual + Tempo Averbado = Total

totalA := (Ano*360) + (AnoA*360) + (Mes*30) + (MesA*30) + Dia + DiaA;
AnoT := TotalA div 360;
MesT := (TotalA - (AnoT*360))div 30;
DiaT := TotalA - ((Anot*360)+(MesT*30));

Edit6.Text := IntToStr(AnoT)+ ' Ano(s), '+ IntToStr(MesT)+ ' Mese(s), ' + IntToStr(DiaT)+' Dia(s)';

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Não sei se compreendi muito bem, mas não seria algo semelhante a isso:

 

 
  if DiaAverbacoes >= 30 then
    MesAverbacoes := MesAverbacoes + 1;
 
  if MesAverbacoes >= 12 then
    AnoAverbacoes := AnoAverbacoes + 1;
 

 

Obs: Estou usando variáveis fictícias.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.