MaximoAccess

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

Obrigado

Administração do MaximoAccess

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 : 4
    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 11 vez(es)
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6164
    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 : 4
    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 : 6164
    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 : 4
    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.

    Conteúdo patrocinado

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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/7/2019, 00:06