Calcular data do vencimento...

Delphi

25/04/2006

Olá a todos, mais uma vez venho solicitar a ajuda dos colegas, desde já agradeço pela atenção.

Estou usando esta função para calcular os dias uteis entre um período, e está funcionando, agora eu queria usando estes mesmos detalhes (dias uteis + feriados) calcular o vencimento, sendo:

ex.
datainicial = ´01/04/2006´
datafinal = ´now´ a data do dia
prazo = ´15´ dias (pode ser 10,15,30...)
sendo os calculos considerando os dias uteis, excluido-se os feriados e fins de semana.
Será que os colegas teriam como me ajudar, talvez mudando a função ou existindo outra me indicar.
um abraço a todos

segue a função:

function DiasUteis(DataInicial, DataFinal: TDateTime; FeriadoMovel: TStringList): integer;
var
Feriados: TStringList;
DiaMes: string;
begin
result := 0;

if DataInicial > DataFinal then
Exit;

// Carrega feriados nacionais fixos
Feriados := TStringList.Create;
try
Feriados.Add(´1/1´);
Feriados.Add(´21/4´);
Feriados.Add(´1/5´);
Feriados.Add(´7/9´);
Feriados.Add(´12/10´);
Feriados.Add(´2/11´);
Feriados.Add(´15/11´);
Feriados.Add(´25/12´);

while (DataInicial <= DataFinal) do
begin
DiaMes := IntToStr(DayOf(DataInicial)) + ´/´ + IntToStr(MonthOf(DataInicial));
if (DayOfTheWeek(DataInicial) in [1..5]) and
(Feriados.IndexOf(DiaMes) = -1) and
(FeriadoMovel.IndexOf(DiaMes) = -1) then
result := result + 1;

DataInicial := DataInicial + 1;
end;
finally
FreeAndNil(Feriados);
end;
end;

* como estou executando a função.

procedure TForm1.RespostaExit(Sender: TObject);
begin

DiasUteis((Edital_DOE.Field.AsInteger), (Resposta.Field.AsInteger)) ;

Table1PrazoRetornoAR.AsInteger := DiasUteis((Edital_DOE.Field.AsDateTime), (Resposta.Field.AsDateTime));
end;


Naelson

Naelson

Curtidas 0

Respostas

Naelson

Naelson

25/04/2006

Sobe

Olá a todos, mais uma vez venho solicitar a ajuda dos colegas, desde já agradeço pela atenção. Estou usando esta função para calcular os dias uteis entre um período, e está funcionando, agora eu queria usando estes mesmos detalhes (dias uteis + feriados) calcular o vencimento, sendo: ex. datainicial = ´01/04/2006´ datafinal = ´now´ a data do dia prazo = ´15´ dias (pode ser 10,15,30...) sendo os calculos considerando os dias uteis, excluido-se os feriados e fins de semana. Será que os colegas teriam como me ajudar, talvez mudando a função ou existindo outra me indicar. um abraço a todos segue a função: function DiasUteis(DataInicial, DataFinal: TDateTime; FeriadoMovel: TStringList): integer; var Feriados: TStringList; DiaMes: string; begin result := 0; if DataInicial > DataFinal then Exit; // Carrega feriados nacionais fixos Feriados := TStringList.Create; try Feriados.Add(´1/1´); Feriados.Add(´21/4´); Feriados.Add(´1/5´); Feriados.Add(´7/9´); Feriados.Add(´12/10´); Feriados.Add(´2/11´); Feriados.Add(´15/11´); Feriados.Add(´25/12´); while (DataInicial <= DataFinal) do begin DiaMes := IntToStr(DayOf(DataInicial)) + ´/´ + IntToStr(MonthOf(DataInicial)); if (DayOfTheWeek(DataInicial) in [1..5]) and (Feriados.IndexOf(DiaMes) = -1) and (FeriadoMovel.IndexOf(DiaMes) = -1) then result := result + 1; DataInicial := DataInicial + 1; end; finally FreeAndNil(Feriados); end; end; * como estou executando a função. procedure TForm1.RespostaExit(Sender: TObject); begin DiasUteis((Edital_DOE.Field.AsInteger), (Resposta.Field.AsInteger)) ; Table1PrazoRetornoAR.AsInteger := DiasUteis((Edital_DOE.Field.AsDateTime), (Resposta.Field.AsDateTime)); end;



GOSTEI 0
POSTAR