SUBTRAÇÃO DE TEMPO DE SERVIÇO

Delphi

22/01/2014

Tenho um programa de contagem de tempo de serviço que sai o resultado total no seguinte EDIT:

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

Porém estou precisando também calcular quanto tempo falta ainda para a pessoa aposentar que é 30 anos de serviço ou seja pega

30 ANOS 00 MES e 00 DIA e subtrai pelo resultado:

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

aí vai sair o tempo que ainda falta para aposentadoria, alguém pode me ajudar como subtrair o resultado de 30 anos 00 mês e 00 dia?
Paulo

Paulo

Curtidas 0

Respostas

Marcos Saffran

Marcos Saffran

22/01/2014

Paulo fiz o procedimento abaixo, veja se te atende.
obs.: considerei todos os meses com 30 dias
o procedimento não leva em conta anos bissextos
var
  AnoC, MesC, DiaC : Integer; //valores calculados
  AnoAux, MesAux, DiaAux : Integer; //variáveis auxiliares
  AnoT, MesT, DiaT : Integer;
begin
  if (MesT > 0) or (DiaT > 0) then
  begin
    AnoAux := AnoT + 1;
    if DiaT > 0 then
    begin
      MesAux := MesT + 1;
      DiaAux := 30 - DiaT;
    end
    else
      MesAux := MesT;
  end
  else
  begin
    AnoAux := AnoT;
  end;
  AnoC := 30 - AnoAux;
  MesC := 13 - MesAux;
  DiaC := DiaAux;
end;
GOSTEI 0
Paulo

Paulo

22/01/2014

Paulo fiz o procedimento abaixo, veja se te atende.
obs.: considerei todos os meses com 30 dias
o procedimento não leva em conta anos bissextos
var
  AnoC, MesC, DiaC : Integer; //valores calculados
  AnoAux, MesAux, DiaAux : Integer; //variáveis auxiliares
  AnoT, MesT, DiaT : Integer;
begin
  if (MesT > 0) or (DiaT > 0) then
  begin
    AnoAux := AnoT + 1;
    if DiaT > 0 then
    begin
      MesAux := MesT + 1;
      DiaAux := 30 - DiaT;
    end
    else
      MesAux := MesT;
  end
  else
  begin
    AnoAux := AnoT;
  end;
  AnoC := 30 - AnoAux;
  MesC := 13 - MesAux;
  DiaC := DiaAux;
end;



Não entendi como fazer a subtração do tempo total que está no edit6 de 30 anos 00 meses e 00 dia e jogar no edit3
GOSTEI 0
Marcos Saffran

Marcos Saffran

22/01/2014

Você já tem os valores AnoT, MesT e DiaT, o meu procedimento usa esses seus valores para subtrair de 30 anos, é só inserir o meu procedimento no seu procedimento.

No final do procedimento você pode incluir a seguinte linha:

Edit3.Text := 'Faltam ' + IntToStr(AnoC)+ ' Ano(s), '+ IntToStr(MesC)+ ' Mês(es), ' + IntToStr(DiaC)+' Dia(s)';
GOSTEI 0
Thiago Irrazabal

Thiago Irrazabal

22/01/2014

Boa tarde amigo, eu faria de outra maneira, segue o meu exemplo.

Primeiramente declare essas propriedades no public da tua unit.
  property DiasTrabalhados: Integer read GetDiasTrabalhados;
  property DiasParaAposentadoria: Integer read GetDiasParaAposentadoria;
  property DiasFaltantesParaAposentadoria: Integer read GetDiasFaltantesParaAposentadoria;
  property AnosFaltantes: Integer read GetAnosFaltantes;
  property MesesFaltantes: Integer read GetMesesFaltantes;
  property DiasFaltantes: Integer read GetDiasFaltantes;

Aperte o CTRL + SHIFT + C para criar os métodos "GET's".

No método GetDiasParaAposentadoria coloque isso:
  Result := 30 * 360;


No método GetDiasTrabalhados coloque isso:
  Result := (AnoT * 360) + (MesT * 30) + DiaT;


No método GetDiasFaltantesParaAposentadoria coloque isso:
  Result := DiasParaAposentadoria - DiasTrabalhados;


No método GetAnosFaltantes coloque isso:
  Result := DiasFaltantesParaAposentadoria div 360;


No método GetMesesFaltantes coloque isso:
  Result := (DiasFaltantesParaAposentadoria div 30) - ((DiasFaltantesParaAposentadoria div 360) * 12);


No método GetDiasFaltantes coloque isso:
  Result := 30 - DiaT;


Declare uma procedure chamada Calcula:
  procedure Calcula;

Aperta o CTRL + SHIFT + C para criar ela e coloque isso:
  AnoT := AnosFaltantes;
  MesT := MesesFaltantes;
  DiaT := DiasFaltantes;

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

Depois é só chamar a procedure Calcula no click de algum botão.


Lembrando que eu usei o ano comercial para os cálculos, no caso o ano comercial tem 360 dias e cada mês tem 30 dias. Abraço



Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Paulo

Paulo

22/01/2014

Paulo fiz o procedimento abaixo, veja se te atende.
obs.: considerei todos os meses com 30 dias
o procedimento não leva em conta anos bissextos
var
  AnoC, MesC, DiaC : Integer; //valores calculados
  AnoAux, MesAux, DiaAux : Integer; //variáveis auxiliares
  AnoT, MesT, DiaT : Integer;
begin
  if (MesT > 0) or (DiaT > 0) then
  begin
    AnoAux := AnoT + 1;
    if DiaT > 0 then
    begin
      MesAux := MesT + 1;
      DiaAux := 30 - DiaT;
    end
    else
      MesAux := MesT;
  end
  else
  begin
    AnoAux := AnoT;
  end;
  AnoC := 30 - AnoAux;
  MesC := 13 - MesAux;
  DiaC := DiaAux;
end;



Não entendi como fazer a subtração do tempo total que está no edit6 de 30 anos 00 meses e 00 dia e jogar no edit3



ATÉ ESTA SAINDO O RESULTADO, MAIS NÃO MUITO EXATO.


VOU POSTAR O MEU CODIGO E SE VC PUDER ME AJUDAR:

procedure TForm1.BtnSomarClick(Sender: TObject);
Var
Ano, Mes, Dia, Ano1, Mes1, Dia1, Ano2, Mes2, Dia2, AnoA, MesA,
DiaA, TotalB, 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);

//end {Foi retirado um End daqui, esse end não pode existir aqui}

// AÍ EU ADICIONEI MAIS 3 EDITS E MAIS 2 LABELS E ADICIONEI OS CODIGOS ABAIXO:

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);


TotalB := (AnoA*360) + (MesA*30) + DiaA;
AnoA := TotalB div 360;
MesA := (TotalB - (AnoA*360))div 30;
DiaA := TotalB - ((AnoA*360)+(MesA*30));

//Tempo Averbado é jogado no Edit5

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



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));


//Tempo Atual + Tempo Averbado = Total

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

end;

GOSTEI 0
William

William

22/01/2014

Colega usando unit DateUtils desenvolvi um pequeno sisteminha que calcula o tempo de serviço e o tempo restante, basicamente uma função que recebe 3 parâmetros processa todos os cálculos, segue abaixo:

Segue exemplo formulário
[img:descricao=Formulário]http://arquivo.devmedia.com.br/forum/imagem/269142-20140123-124434.jpg[/img]

Segue código
procedure TForm1.CalculaTempo(dataInicial, dataFinal: TDateTime;
  Tempo: integer);
var
   vDiaA, vMesA, vAnoA, vDiaI, vMesI, vAnoI: word;
   vDiasD, vMesesD, vAnosD, vDiaR, vMesR, vAnoR, vTemp: integer;
   vDataTemp: TDateTime;
begin
    // Calcula diferença entre os anos
    vAnosD := YearsBetween(dataFinal, dataInicial);

    // Fragmenta as datas em dia, mes e ano
    DecodeDate(dataInicial, vAnoI, vMesI, vDiaI);
    DecodeDate(dataFinal, vAnoA, vMesA, vDiaA);

    // Calcula diferença entre os meses
    vTemp := 0;
    vTemp := vMesI - vMesA;
    if vMesI > vMesA then
    begin
       vMesesD := vTemp - 12;
       vMesesD := vMesesD * -1;
    end
    else
       vMesesD := vTemp;

    // Calcula diferença entre os dias
    vDataTemp := StrToDate(IntToStr(vDiaI) + '/' + IntToStr(vMesA) + '/' + IntToStr(vAnoA));
    vDiasD := DaysBetween(vDataTemp, dataFinal);

    // Calcula quantidade de anos restantes
    vAnoR := Tempo - vAnosD;

    // Calcula quantidade de meses restantes
    vMesR := 12 - vMesesD;

    // Calcula quantidade de dias restantes
    vDataTemp := StrToDate('01/' + IntToStr(vMesI) + '/' + IntToStr(vAnoI + Tempo));
    vDiaR := DaysInMonth(vDataTemp) - vDiasD;

    // Exibe o resultado no TMemo
    mmResultado.Clear;
    mmResultado.Lines.Add('Tempo de Serviço');
    mmResultado.Lines.Add(IntToStr(vAnosD) + ' anos, ' + IntToStr(vMesesD) + ' meses e ' + IntToStr(vDiasD) + ' dias ');
    mmResultado.Lines.Add(' ');
    mmResultado.Lines.Add('Tempo restante ');
    mmResultado.Lines.Add(IntToStr(vAnoR) + ' anos, ' + IntToStr(vMesR) + ' meses e ' + IntToStr(vDiaR) + ' dias ');
end;


Qualquer dúvida estou a disposição ...
GOSTEI 0
Paulo

Paulo

22/01/2014

Colega usando unit DateUtils desenvolvi um pequeno sisteminha que calcula o tempo de serviço e o tempo restante, basicamente uma função que recebe 3 parâmetros processa todos os cálculos, segue abaixo:

Segue exemplo formulário
[img:descricao=Formulário]http://arquivo.devmedia.com.br/forum/imagem/269142-20140123-124434.jpg[/img]

Segue código
procedure TForm1.CalculaTempo(dataInicial, dataFinal: TDateTime;
  Tempo: integer);
var
   vDiaA, vMesA, vAnoA, vDiaI, vMesI, vAnoI: word;
   vDiasD, vMesesD, vAnosD, vDiaR, vMesR, vAnoR, vTemp: integer;
   vDataTemp: TDateTime;
begin
    // Calcula diferença entre os anos
    vAnosD := YearsBetween(dataFinal, dataInicial);

    // Fragmenta as datas em dia, mes e ano
    DecodeDate(dataInicial, vAnoI, vMesI, vDiaI);
    DecodeDate(dataFinal, vAnoA, vMesA, vDiaA);

    // Calcula diferença entre os meses
    vTemp := 0;
    vTemp := vMesI - vMesA;
    if vMesI > vMesA then
    begin
       vMesesD := vTemp - 12;
       vMesesD := vMesesD * -1;
    end
    else
       vMesesD := vTemp;

    // Calcula diferença entre os dias
    vDataTemp := StrToDate(IntToStr(vDiaI) + '/' + IntToStr(vMesA) + '/' + IntToStr(vAnoA));
    vDiasD := DaysBetween(vDataTemp, dataFinal);

    // Calcula quantidade de anos restantes
    vAnoR := Tempo - vAnosD;

    // Calcula quantidade de meses restantes
    vMesR := 12 - vMesesD;

    // Calcula quantidade de dias restantes
    vDataTemp := StrToDate('01/' + IntToStr(vMesI) + '/' + IntToStr(vAnoI + Tempo));
    vDiaR := DaysInMonth(vDataTemp) - vDiasD;

    // Exibe o resultado no TMemo
    mmResultado.Clear;
    mmResultado.Lines.Add('Tempo de Serviço');
    mmResultado.Lines.Add(IntToStr(vAnosD) + ' anos, ' + IntToStr(vMesesD) + ' meses e ' + IntToStr(vDiasD) + ' dias ');
    mmResultado.Lines.Add(' ');
    mmResultado.Lines.Add('Tempo restante ');
    mmResultado.Lines.Add(IntToStr(vAnoR) + ' anos, ' + IntToStr(vMesR) + ' meses e ' + IntToStr(vDiaR) + ' dias ');
end;


Qualquer dúvida estou a disposição ...


deu o seguinte erro:

[Error] Unit1.pas(38): Incompatible types: 'TDateTime' and 'TDateTimePicker'
[Error] Unit1.pas(38): Incompatible types: 'TDateTime' and 'TDateTimePicker'
[Error] Unit1.pas(41): Incompatible types: 'TDateTime' and 'TDateTimePicker'
[Error] Unit1.pas(42): Incompatible types: 'TDateTime' and 'TDateTimePicker'
[Error] Unit1.pas(57): Incompatible types: 'TDateTime' and 'TDateTimePicker'
[Error] Unit1.pas(60): Undeclared identifier: 'Tempo'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

outra dúvida:

que componente é aquele onde está digitado 30?
GOSTEI 0
Marcos Saffran

Marcos Saffran

22/01/2014

[img]http://arquivo.devmedia.com.br/forum/imagem/291861-20140123-153844.jpg[/img]
Estou fundindo a cabeça aqui também, mas a diferença que deve dar, conforme os dados da imagem, é de 3 anos, 2 meses e 16 dias.
GOSTEI 0
William

William

22/01/2014

Estou utilizando um componente da suíte JEDI, é o TJvSpinEdit.

Quanto a diferença pode até ser mesmo, montei esse código as pressas na hora do almoço ...
GOSTEI 0
William

William

22/01/2014

Colega analisei correndo aqui o código e coloquei uma correção:

procedure TForm1.CalculaTempo(dataInicial, dataFinal: TDateTime;
  Tempo: integer);
var
   vDiaA, vMesA, vAnoA, vDiaI, vMesI, vAnoI: word;
   vDiasD, vMesesD, vAnosD, vDiaR, vMesR, vAnoR, vTemp: integer;
   vDataTemp: TDateTime;
begin
    // Calcula diferença entre os anos
    vAnosD := YearsBetween(dataFinal, dataInicial);

    // Fragmenta as datas em dia, mes e ano
    DecodeDate(dataInicial, vAnoI, vMesI, vDiaI);
    DecodeDate(dataFinal, vAnoA, vMesA, vDiaA);

    // Calcula diferença entre os meses
    vTemp := 0;
    vTemp := vMesI - vMesA;
    if vMesI > vMesA then
    begin
       vMesesD := vTemp - 12;
       vMesesD := vMesesD * -1;
    end
    else
       vMesesD := vTemp;

    // Calcula diferença entre os dias
    vDataTemp := StrToDate(IntToStr(vDiaI) + '/' + IntToStr(vMesA) + '/' + IntToStr(vAnoA));
    vDiasD := DaysBetween(vDataTemp, dataFinal);

    // Calcula quantidade de anos restantes
    vAnoR := (Tempo - vAnosD) -1;

    // Calcula quantidade de meses restantes
    vMesR := (12 - vMesesD) -1;

    // Calcula quantidade de dias restantes
    vDataTemp := StrToDate('01/' + IntToStr(vMesI) + '/' + IntToStr(vAnoI + Tempo));
    vDiaR := DaysInMonth(vDataTemp) - vDiasD;

    // Exibe o resultado no TMemo
    mmResultado.Clear;
    mmResultado.Lines.Add('Tempo de Serviço');
    mmResultado.Lines.Add(IntToStr(vAnosD) + ' anos, ' + IntToStr(vMesesD) + ' meses e ' + IntToStr(vDiasD) + ' dias ');
    mmResultado.Lines.Add(' ');
    mmResultado.Lines.Add('Tempo restante ');
    mmResultado.Lines.Add(IntToStr(vAnoR) + ' anos, ' + IntToStr(vMesR) + ' meses e ' + IntToStr(vDiaR) + ' dias ');
end;


Testa agora!!
GOSTEI 0
Paulo

Paulo

22/01/2014

Colega analisei correndo aqui o código e coloquei uma correção:

procedure TForm1.CalculaTempo(dataInicial, dataFinal: TDateTime;
  Tempo: integer);
var
   vDiaA, vMesA, vAnoA, vDiaI, vMesI, vAnoI: word;
   vDiasD, vMesesD, vAnosD, vDiaR, vMesR, vAnoR, vTemp: integer;
   vDataTemp: TDateTime;
begin
    // Calcula diferença entre os anos
    vAnosD := YearsBetween(dataFinal, dataInicial);

    // Fragmenta as datas em dia, mes e ano
    DecodeDate(dataInicial, vAnoI, vMesI, vDiaI);
    DecodeDate(dataFinal, vAnoA, vMesA, vDiaA);

    // Calcula diferença entre os meses
    vTemp := 0;
    vTemp := vMesI - vMesA;
    if vMesI > vMesA then
    begin
       vMesesD := vTemp - 12;
       vMesesD := vMesesD * -1;
    end
    else
       vMesesD := vTemp;

    // Calcula diferença entre os dias
    vDataTemp := StrToDate(IntToStr(vDiaI) + '/' + IntToStr(vMesA) + '/' + IntToStr(vAnoA));
    vDiasD := DaysBetween(vDataTemp, dataFinal);

    // Calcula quantidade de anos restantes
    vAnoR := (Tempo - vAnosD) -1;

    // Calcula quantidade de meses restantes
    vMesR := (12 - vMesesD) -1;

    // Calcula quantidade de dias restantes
    vDataTemp := StrToDate('01/' + IntToStr(vMesI) + '/' + IntToStr(vAnoI + Tempo));
    vDiaR := DaysInMonth(vDataTemp) - vDiasD;

    // Exibe o resultado no TMemo
    mmResultado.Clear;
    mmResultado.Lines.Add('Tempo de Serviço');
    mmResultado.Lines.Add(IntToStr(vAnosD) + ' anos, ' + IntToStr(vMesesD) + ' meses e ' + IntToStr(vDiasD) + ' dias ');
    mmResultado.Lines.Add(' ');
    mmResultado.Lines.Add('Tempo restante ');
    mmResultado.Lines.Add(IntToStr(vAnoR) + ' anos, ' + IntToStr(vMesR) + ' meses e ' + IntToStr(vDiaR) + ' dias ');
end;


Testa agora!!



Como executar essa procedure em um button?

sou novo no delphi e ainda não comecei criar procedures e funçao.
GOSTEI 0
William

William

22/01/2014

Colega Paulo observe a assinatura do procedure:

procedure TForm1.CalculaTempo(dataInicial, dataFinal: TDateTime; Tempo: integer);


Essa procedure recebe 3 parâmetros:
dataInicial (TDateTime) = Data que o funcionário entrou na empresa
dataFinal (TDateTime) = Data atual, ou seja, a data do dia em que vc executar esse programa
Tempo (Integer) = Tempo necessário para aposentar, no seu caso é 30 anos, mas deixei flexível vai que mude e seja 35 anos.

Como é uma procedure ela não retorna valor, então eu exibi o resultado dentro um TMemo.

Para chamar a procedure basta colocar no form uma componente TMemo, nomea-lo para mmResultado, e colocar um botão para disparar a procedure com o seguinte código:
CalculaTempo(StrtoDate('01/01/2000'), Date, 30);


Nesse exemplo estou supondo que o funcionário entrou na empresa na data 01/01/2000, passando a data atual e por último o tempo para aposentar 30.

Qualquer dúvida estou a disposição .
GOSTEI 0
Paulo

Paulo

22/01/2014

Colega Paulo observe a assinatura do procedure:

procedure TForm1.CalculaTempo(dataInicial, dataFinal: TDateTime; Tempo: integer);


Essa procedure recebe 3 parâmetros:
dataInicial (TDateTime) = Data que o funcionário entrou na empresa
dataFinal (TDateTime) = Data atual, ou seja, a data do dia em que vc executar esse programa
Tempo (Integer) = Tempo necessário para aposentar, no seu caso é 30 anos, mas deixei flexível vai que mude e seja 35 anos.

Como é uma procedure ela não retorna valor, então eu exibi o resultado dentro um TMemo.

Para chamar a procedure basta colocar no form uma componente TMemo, nomea-lo para mmResultado, e colocar um botão para disparar a procedure com o seguinte código:
CalculaTempo(StrtoDate('01/01/2000'), Date, 30);


Nesse exemplo estou supondo que o funcionário entrou na empresa na data 01/01/2000, passando a data atual e por último o tempo para aposentar 30.

Qualquer dúvida estou a disposição .



são vários funcionários, então as datas que os funcionários entraram na empresa são variáveis, no lugar do 01/01/2000 para dar certo no meu sistema teria que ser uma data variável, entendeu mais ou menos?
GOSTEI 0
William

William

22/01/2014

Colega eu postei um exemplo de data, mas você pode colocar qualquer data que achar melhor, até se o cara entrou em 05/02/1950, 02/10/1500 a trabalhar na empresa!!!

E claro que pode puxar essa datas de um banco de dados usando um loop while, vai da criatividade !!
GOSTEI 0
Paulo

Paulo

22/01/2014

Colega eu postei um exemplo de data, mas você pode colocar qualquer data que achar melhor, até se o cara entrou em 05/02/1950, 02/10/1500 a trabalhar na empresa!!!

E claro que pode puxar essa datas de um banco de dados usando um loop while, vai da criatividade !!


Só que o meu sistema não tem banco de dados, a contagem é feita sem bd, simplesmente eu coloco a data de entrada a de saída e as averbações e sai o resultado
GOSTEI 0
William

William

22/01/2014

Então você pode digitar essas datas individualmente mesmo, sem problema!!!

Colega essa procedure é apenas uma solução básica, mas você pode aperfeiçoa-la da maneira que achar melhor.
GOSTEI 0
POSTAR