seguinte.
Na função:
CODE
function Dias_Uteis(DataI, DataF:TDate):Integer;
var contador, i, n :Integer; DataR : Tdate;
begin
n := 0;
if DataI > DataF then
begin
result := 0;
exit;
end;
Contador := 0;
while (DataI <= DataF) do
begin
if ((DayOfWeek(DataI) <> 1) and (DayOfWeek(DataI) <> 7)) then
Inc(Contador);
for i := 0 to Form1.ComboBox1.Items.Count-1 do
begin
DataR := strtodate(Form1.ComboBox1.Items.Strings[i]);
if DataR = int(DataI) then
n := n + 1;
end;
DataI := DataI + 1;
end;
result := Contador-n;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
i := Dias_Uteis(DateTimePicker1.Date ,DateTimePicker2.Date);
showmessage('Total de dias úteis no período : ' + inttostr(i));
end;
Eu estou usando sua função no relatorio, porem como eu tenho que contar sempre diminuindo o primeiro dia util então inseri um -1 na linha:
result := Contador-n-1;
var contador, i, n :Integer; DataR : Tdate;
begin
n := 0;
if DataI > DataF then
begin
result := 0;
exit;
end;
Contador := 0;
while (DataI <= DataF) do
begin
if ((DayOfWeek(DataI) <> 1) and (DayOfWeek(DataI) <> 7)) then
Inc(Contador);
for i := 0 to Form1.ComboBox1.Items.Count-1 do
begin
DataR := strtodate(Form1.ComboBox1.Items.Strings[i]);
if DataR = int(DataI) then
n := n + 1;
end;
DataI := DataI + 1;
end;
result := Contador-n;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
i := Dias_Uteis(DateTimePicker1.Date ,DateTimePicker2.Date);
showmessage('Total de dias úteis no período : ' + inttostr(i));
end;
Eu estou usando sua função no relatorio, porem como eu tenho que contar sempre diminuindo o primeiro dia util então inseri um -1 na linha:
result := Contador-n-1;
Neste caso ele sempre diminue 1.
O problema é quando o primeiro dia cai num sabado ou domingo, neste caso ele faz a conta incorretamente.
Exemplo: se a primeira data for sabado dia 06-02 e a ultima data for 08-02 segunda ele deveria contar 1 dia util, porem ta contando 0.
Pela seu codigo original ele conta correto pois eu to diminuindo 1 na função.
tentei fazer um if mas não deu certo. pois se não for final de semana tem que ser assim:
QUOTE
result := Contador-n-1;
mas se for final de semana tem que ser assim: QUOTE
result := Contador-n;
Como eu poderia contornar este problema?
Muito Obrigado