GARANTIR DESCONTO

Fórum Função para calcular dia útil no Delphi #385894

09/09/2010

0

Gostaria de saber se alguem possui uma função e possa disponibilizar, aonde informado uma data e a mesma retorne o próximo dia útil levando em consideração finais de semana e feriados.
<DIV> </DIV>
<DIV>Desde ja agradeço,</DIV>
Eremita

Eremita

Responder

Posts

09/09/2010

Eriley Barbosa

Retorna o próximo dia útil caso a data informada caia em um fim de semana:

Function ProximoDiaUtil (dData : TDateTime) : TDateTime;
begin
   if DayOfWeek(dData) = 7 then
      dData := dData + 2
   else if DayOfWeek(dData) = 1 then
      dData := dData + 1;
   ProximoDiaUtil := dData;
end;


Não esqueça de declarar Date Utils no Uses de sua Unit. Quanto a feriados você tem que criar no seu sistema uma tabela de feriados móveis e pegar a data passada como parâmetro e ver se existe na tabela, se existir, soma mais um dia.
Responder

Gostei + 0

09/09/2010

Eriley Barbosa

DateUtils é junto.
Responder

Gostei + 0

09/09/2010

Eremita

Minha principal dúvida é quanto a estrutura para tratar os feriados e finais de semana.   Imagina a possibilidade de uma data informada seja um feriado e que este caia numa sexta, ele ira para segunda, mas vamos supor que segunda tenhamos outro feriado.   Imagina ainda 2 feriados seguidos.   Estou apenas pensando nas possibilidade e não querendo dificultar as coisas.   Espero que me entendam,  
Responder

Gostei + 0

09/09/2010

Eriley Barbosa

Imagino que você deva fazer um Loop para a parte de feriados com uma variavel de controle Booleana, enquanto for true, continua fazendo o select e vendo se é feriado e somando + 1 a data, quando o select retornar vazio atribui falso e sai do laço e grava a data na tabela.
Responder

Gostei + 0

09/09/2010

Emerson Nascimento

veja se a idéia desta stored procedure pode te ajudar.
Responder

Gostei + 0

11/09/2010

Eremita

Ótimo, justamente o que preciso.   Muito obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar