Ir ao conteúdo

Tratar Feriados no Delphi


benegas

Posts recomendados

Postado

Boa tarde Galera.

Sou iniciante em Delphi e estou com uma dúvida, já procurei aqui mas nada similar ao que preciso.

Seguinte, o sistema que estou mexendo faz um cálculo para a devolução de um determinado material, se o dia da devolução cair de sábado ou domingo ele automaticamente coloca a data para o dia "útil" seguinte, até ai tudo bem já até existia o código no sistema

function TfrmEmprestimo.calculaPrevDev(diasEmp: Integer):TDate;
Var
auxDate : TDate;
begin

auxDate := Date + diasEmp;


If DayOfWeek(auxDate) = 1 Then
auxDate := auxDate + 1
Else
If (DayOfWeek(auxDate) = 7) And (Not contaSabado) Then
auxDate := auxDate + 2;

Result := auxDate;

end;

no código acima diasEmp = 3, então se fizer o empréstimo hoje 16/10/2013 ele irá colocar a devolução dia 21/10/2013 correto até ai, agora vem o meu problema:

Existe uma tela de cadastro de feriado no sistema e essa tela manuta a tabela Feriado (banco Oracle) e nessa tabela, tem um campo Date onde fica a data que o usuário informou ser feriado.

Eu queria comparar a data da devolução se for igual a data que existe na tabela feriado fazer o mesmo processo que faz no caso de finais de semana. exemplo se tivesse um feriado dia 21/10/2013 teria que verificar o final de semana e também o feriado colocando a data de devolução para dia 22/10/2013. Como posso fazer isso?

Postado

Bom dia a todos.

Consegui resolver esse problema e irei postar para quem se interessar a solução.

Primeiro fiz uma mudança ao invés de pegar o campo data peguei dois campos numéricos que era o dia e mês (desta data), esses campos já existiam também na tabela e acabei optando por eles, a solução ficou assim


function TfrmEmprestimo.calculaPrevDev(diasEmp: Integer):TDate;
Var
auxDate : TDate;
dia,
mes : string;
begin

auxDate := Date + diasEmp;

If DayOfWeek(auxDate) = 1 Then
auxDate := auxDate + 1
Else
If (DayOfWeek(auxDate) = 7) And (Not contaSabado) Then
auxDate := auxDate + 2;

dia := Copy(DateToStr(auxDate), 1, 2);
mes := Copy(DateToStr(auxDate), 4, 2);

qryFeriado.Close;
qryFeriado.SQL.Clear;
qryFeriado.SQL.Add('Select * from ssp030 where cfidia = :dia and cfimes = :mes');
qryFeriado.Parameters.ParamByName('dia').Value := dia;
qryFeriado.Parameters.ParamByName('mes').Value := mes;
qryFeriado.Open;

if qryFeriado.RecordCount > 0 then
auxDate := auxDate + 1;

Result := auxDate;

end;

Valeu pessoal, espero ter ajudado alguém com uma dificuldade parecida a minha.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!