Fórum Obtendo dias úteis #297459
28/09/2005
0
Exemplo:
12/10/2000 a 13/11/2000 = xxx dias úteis
Obrigada
Celamar
Curtir tópico
+ 0Posts
28/09/2005
Emilio
function DifDateUtil(dataini,datafin:string):integer;
var a,b,c:tdatetime;
ct,s:integer;
begin
if StrToDate(DataFin) < StrtoDate(DataIni) then
begin
Result := 0;
exit;
end;
ct := 0;
s := 1;
a := strtodate(dataFin);
b := strtodate(dataIni);
if a > b then
begin
c := a;
a := b;
b := c;
s := 1;
end;
a := a + 1;
while (dayofweek(a)<>2) and (a <= b) do
begin
if dayofweek(a) in [2..6] then
begin
inc(ct);
end;
a := a + 1;
end;
ct := ct + round((5*int((b-a)/7)));
a := a + (7*int((b-a)/7));
while a <= b do
begin
if dayofweek(a) in [2..6] then
begin
inc(ct);
end;
a := a + 1;
end;
if ct < 0 then
begin
ct := 0;
end;
result := s*ct;
end;
Gostei + 0
28/09/2005
Celamar
Soh me responte uma coisa?
Ele desconsidera os friados NACIONAIS isso né?
Gostei + 0
28/09/2005
Steve_narancic
Gostei + 0
28/09/2005
Emilio
Gostei + 0
28/09/2005
Emilio
Gostei + 0
28/09/2005
Rjun
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;
Gostei + 0
13/04/2006
Naelson
Estou precisando de uma função desta, mais estou tendo dificuldade no código para ativar a função.
estou usando:
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;
Mas me retorna:
Not enough actual parameters
O que pode estar acontencedo. Ou existe outra chamada para esta função.
Um abraço a todos
FELIZ PASCOA..
Naelson
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;
Gostei + 0
15/04/2006
Naelson
estou usando:
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;
Mas me retorna:
Not enough actual parameters
O que pode estar acontencedo. Ou existe outra chamada para esta função.
Um abraço a todos
FELIZ PASCOA..
Naelson
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;
Gostei + 0
16/04/2006
Naelson
Alguem poderia me ajudar...
Um abraço a todos os colegas.
Naelson
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;
Gostei + 0