MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Ajuste Query Dias Uteis + Feriados

    avatar
    rogeriolyma
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 03/11/2016

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  rogeriolyma em 6/6/2019, 14:29

    Olá amigos do forum....

    Gostaria de um auxilio para resolver este código. Está funcionando muito bem, salvo que conta um dia a menos que o desejado, por exemplo:


    Data Final   -  Data Inicio = Resultado Esperado = X /Resultado da Formula = Y

    03/06/2019 - 03/06/2019 = Resultado Esperado = 0 / Resultado da Formula = 0 > Correto
    04/06/2019 - 03/06/2019 = Resultado Esperado = 1 / Resultado da Formula = 0 > Aqui começa a diferença
    05/06/2019 - 03/06/2019 = Resultado Esperado = 2 / Resultado da Formula = 1
    06/06/2018 - 03/06/2019 = Resultado Esperado = 3 / Resultado da Formula = 2

    Anexo o arquivo para facilitar.




    Código:
    Option Compare Database
    Option Explicit

    Public Function DTS(dtInicio As Date, dtFim As Date, Optional HojeTb As Boolean = False, Optional UltTb As Boolean = False) As Integer
    '....................................................................
    ' Nome:     DTS
    ' Entradas: dtInicio As Date
    '           dtFim As Date
    '           HojeTb As Boolean
    '           UltTb As Boolean
    ' Saída:    Integer
    ' Autor:    Arvin Meyer
    ' Data:     Maio 5,2002
    ' Comentário: Aceita duas datas e devolve o número de dias úteis
    '             entre elas. Note-se que esta função considera os feriados
    '             do período. Ela exige a existência de uma tabela chamada
    '             tblFeriados com um campo, no formato data, chamado FerData.
    '             Se HojeTb = True, a data inicial também será considerada.
    '             Se UltTb = true, a data final também será considerada.
    '....................................................................
    On Error GoTo Err_DTS

    Dim intCount As Integer
    Dim rst As DAO.Recordset
    Dim DB As DAO.Database

       Set DB = CurrentDb
       Set rst = DB.OpenRecordset("SELECT [FerData] FROM tblFeriados", dbOpenSnapshot)

       If Not HojeTb Then
           dtInicio = dtInicio + 1
       End If
    ' Se desejar contar a data de início, passe True em HojeTb

       intCount = 0

       If UltTb Then
           Do While dtInicio <= dtFim
               rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
               If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
                   If rst.NoMatch Then intCount = intCount + 1
               End If
               dtInicio = dtInicio + 1
           Loop
       Else
           Do While dtInicio < dtFim
               rst.FindFirst "[FerData] = #" & Format(dtInicio, "mm/dd/yyyy") & "#"
               If Weekday(dtInicio) <> vbSunday And Weekday(dtInicio) <> vbSaturday Then
                   If rst.NoMatch Then intCount = intCount + 1
               End If
               dtInicio = dtInicio + 1
           Loop
       End If
       DTS = intCount

    Exit_DTS:
    Exit Function

    Err_DTS:
    Select Case Err

    Case Else
    MsgBox Err.Description
    Resume Exit_DTS
    End Select

    End Function

    '*********** Code End **************
    Anexos
    [Resolvido]Ajuste Query Dias Uteis + Feriados AttachmentDiasUteisTrabalhados1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (26 Kb) Baixado 26 vez(es)
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6957
    Registrado : 15/03/2013

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  ahteixeira em 6/6/2019, 17:01

    Olá Rogério,

    A função tem "parametros", altere na consulta assim e teste:
    DiasTrabalhados: DTS([DataInicio];[DataFim];Verdadeiro)

    Abraço
    avatar
    rogeriolyma
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 03/11/2016

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  rogeriolyma em 7/6/2019, 14:10

    [RESOLVIDO]

    ahteixeira, bom dia

    Eu tinha alterado no código novamente, mudando uma condição e passou a funcionar,


    Porém a sua solução foi muito mais assertiva, pois não precisou mudar o código. Então voltei ao original e apliquei seu método.
    Fiz diversos testes e os resultados foram satisfatórios.

    Muito obrigado.
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6957
    Registrado : 15/03/2013

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  ahteixeira em 7/6/2019, 14:24

    Olá Rogério, obrigado pelo retorno.

    Repare que a função ainda tem mais um "parametro", para a última data, caso pretenda usar fica assim:
    DiasTrabalhados: DTS([DataInicio];[DataFim];Verdadeiro;Verdadeiro)

    Está no comentário do programador da função, veja:
    Código:
    ' Nome:     DTS
    ' Entradas: dtInicio As Date
    '           dtFim As Date
    '           HojeTb As Boolean
    '           UltTb As Boolean
    ' Saída:    Integer
    ' Autor:    Arvin Meyer
    ' Data:     Maio 5,2002
    ' Comentário: Aceita duas datas e devolve o número de dias úteis
    '             entre elas. Note-se que esta função considera os feriados
    '             do período. Ela exige a existência de uma tabela chamada
    '             tblFeriados com um campo, no formato data, chamado FerData.
    '             Se HojeTb = True, a data inicial também será considerada.
    '             Se UltTb = true, a data final também será considerada.

    Abraço
    avatar
    rogeriolyma
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 03/11/2016

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  rogeriolyma em 11/6/2019, 13:08

    ahteixeira, bom dia

    Fiz os testes aqui e realmente funcionaram como indicou.

    Muito obrigado.

    [pra quem for acessar este post no futuro, este formato de solução deu muito certo pra mim, bem como além de ser uma solução simples, é leve. Recomendo]

    Agradeço novamente ao ahteixeira que permitiu ter sucesso nesta empreitada.
    annissima
    annissima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 146
    Registrado : 24/10/2017

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  annissima em 6/8/2019, 14:35

    Oi,

    Seria possível adaptar esse código para ele calcular a data, ao invés de calcular quantos dias úteis?

    Por exemplo:

    Hoje + 3 dias úteis

    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3686
    Registrado : 04/04/2010

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  Avelino Sampaio em 6/8/2019, 15:11

    Olá!

    veja se este meu artigo te ajuda:

    https://www.usandoaccess.com.br/tutoriais/ajustar-data-vencimento-para-dia-util.asp?id=1#inicio
    Copie e cole o endereço no seu navegador

    Sucesso!


    annissima
    annissima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 146
    Registrado : 24/10/2017

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  annissima em 6/8/2019, 18:57

    Avelino,

    Obrigada, mas não é exatamente isso. Esse exemplo joga datas para o proximo dia útil (ou dia anterior).

    Eu preciso calcular um prazo:

    Data hoje + 15 dias úteis
    Data hoje + 5 dias úteis

    Considerando a tabela de feriados...
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3686
    Registrado : 04/04/2010

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  Avelino Sampaio em 6/8/2019, 20:17

    Adapte este aqui então:

    usandoaccess.com.br/blog/somar-dias-pulando-feriados.asp

    annissima
    annissima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 146
    Registrado : 24/10/2017

    [Resolvido]Ajuste Query Dias Uteis + Feriados Empty Re: [Resolvido]Ajuste Query Dias Uteis + Feriados

    Mensagem  annissima em 10/2/2020, 13:24

    Ainda não consegui Embarassed Embarassed Embarassed

      Data/hora atual: 4/12/2020, 11:08