Função para calcular dia útil no Delphi
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>
<DIV> </DIV>
<DIV>Desde ja agradeço,</DIV>
Eremita
Curtidas 0
Respostas
Eriley Barbosa
09/09/2010
Retorna o próximo dia útil caso a data informada caia em um fim de semana:
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.
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.
GOSTEI 0
Eriley Barbosa
09/09/2010
DateUtils é junto.
GOSTEI 0
Eremita
09/09/2010
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,
GOSTEI 0
Eriley Barbosa
09/09/2010
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.
GOSTEI 0
Emerson Nascimento
09/09/2010
veja se a idéia desta stored procedure pode te ajudar.
GOSTEI 0
Eremita
09/09/2010
Ótimo, justamente o que preciso.
Muito obrigado.
GOSTEI 0