Jonas caso for você quem ver este tópico, não sei se fiz o correto postar o probleminha aqui, mas em fim, se puderes me ajudar ou outro colega.
seguinte.
Na função:
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;
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:
Pergunta
Eder
Jonas caso for você quem ver este tópico, não sei se fiz o correto postar o probleminha aqui, mas em fim, se puderes me ajudar ou outro colega.
seguinte.
Na função:
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:
mas se for final de semana tem que ser assim:Como eu poderia contornar este problema?
Muito Obrigado
Link para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.