Autor
Mensagem
{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.
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,
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.








