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


    Cálculo de datas considerando dias úteis

    avatar
    khromus
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 12
    Registrado : 07/05/2018

    Cálculo de datas considerando dias úteis Empty Cálculo de datas considerando dias úteis

    Mensagem  khromus em 6/11/2018, 12:59

    Bom dia amigos,

    Tenho um formulário que calcula a diferença de datas entre a entrada de um projeto e a saida dele, porem ele está calculando em dias corridos e eu gostaria que ele contasse apenas os dias úteis. Existe essa possibilidade?
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

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

    Cálculo de datas considerando dias úteis Empty Re: Cálculo de datas considerando dias úteis

    Mensagem  Avelino Sampaio em 6/11/2018, 13:26

    Olá!

    veja se este meu artigo ajuda: (copie e cole o endereço abaixo no seu navegador)

    usandoaccess.com.br/blog/contar-apenas-dias-uteis-consulta.asp


    Bom estudo!
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 23/01/2017

    Cálculo de datas considerando dias úteis Empty Re: Cálculo de datas considerando dias úteis

    Mensagem  thiagomcosta em 6/11/2018, 15:16

    Eu utilizo esta função abaixo

    Código:
    Public Function DiasUteis(pDataInicio As Date, DataFim As Date) As Long
    'By JPaulo Ž Maximo Access
    'Total de Dias entre duas datas sem fins de semana
    'Tirado daqui http://www.maximoaccess.com/t4388-resolvidodias-uteis
    'E feito algumas modificações
    Dim TotalDiasActuais As Long, TotalDiasTrab As Long
    Dim strIniciaContagem As Long
    Dim DataInicio

    DataInicio = pDataInicio

    DoCmd.Hourglass (-1)
    strIniciaContagem = 1
    If Weekday(DataInicio, vbMonday) >= 6 Then
        strIniciaContagem = 0
    End If

    TotalDiasActuais = (DataFim - DataInicio) + 1

    Do
        If Weekday(DataInicio, vbMonday) >= 6 Then
            strIniciaContagem = strIniciaContagem + 1
        End If
        DataInicio = DataInicio + 1
    Loop Until DataInicio = DataFim + 1

    TotalDiasTrab = TotalDiasActuais - strIniciaContagem
    DoCmd.Hourglass (0)
    DiasUteis = TotalDiasTrab
    End Function
    good guy
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1271
    Registrado : 05/02/2010

    Cálculo de datas considerando dias úteis Empty Cálculo de data considerando dias úteis

    Mensagem  good guy em 8/11/2018, 14:44

    Bem Thiago,

    Eis a minha proposta de solução:

    Código:
    Public Function SomaDiasUteis(dtaDataInicial As Date, dtaDataFinal As Date)
    On Error Resume Next
    'Código de Eduardo Machado(Good Guy) - Ano 2018
    Dim cont, count As Integer
    Dim contData As Date
    Dim DiaSemana, DiaSemana2 As Variant
    Dim intDias As Integer

    dtaDataInicial = Me.txtDataInicio
    dtaDataFinal = Me.txtDataInfo
    intDias = DateDiff("d", dtaDataInicial, dtaDataFinal)

    For cont = 1 To intDias         'intDias é o total de dias contando os dias úteis
    contData = DateAdd("d", cont, dtaDataInicial)  'contData soma 1 dia de cada vez no looping FOR... NEXT à data inicial até cont for igual a intDias)
        DiaSemana = Weekday(contData, vbSunday)      'DiaSemana é o dia da semana que for Domingo durante o looping FOR...NEXT)
        DiaSemana2 = Weekday(contData, vbSaturday)  'DiaSemana2 é o dia da semana que for Sábado durante o looping FOR...NEXT)  
        count = count + 1    'count é a variável Contador que contará o número de dias durante o looping FOR...NEXT
        If DiaSemana = 1 Then   'Se DiaSemana (dia da semana) for igual a 1 referente ao primeiro dia da semana, isto é, domingo, diminuirá de 1 do total de dias
        count = count - 1        
        End If
        If DiaSemana2 = 7 Then 'Se DiaSemana (dia da semana) for igual a 7 referente ao último dia da semana, isto é, sábado, diminuirá de 1 do total de dias
        count = count - 1
        End If
      
    Next cont

    Me.txtDias = count + 1 (Ou somente count se não considerar o primeiro dia)
      


    End Function


    Aprenda Access VBA com algoritmos aqui:

    http://www.maximoaccess.com/t29536-livro-publicado-tecnicas-especiais-de-access-vba-da-autoria-de-good-guy

    http://www.maximoaccess.com/t32310-segundo-livro-publicado-do-good-guy-domine-o-access-vba-para-iniciantes-na-programacao


    "O temor do Senhor(respeito pela Palavra de Deus, leitura e obediência) é o princípio do conhecimento" (Prov. 1.7)
    Disse Jesus: "E conhecereis a Verdade e a Verdade vos libertará". (Jo 8.32)
    Disse Jesus: “Eu sou a luz do mundo; aquele que me segue, não andará em trevas, mas terá a luz da vida.” (Jo. 8.12)
    Anexos
    Cálculo de datas considerando dias úteis AttachmentSomaDiasUteis.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (25 Kb) Baixado 11 vez(es)

    Conteúdo patrocinado

    Cálculo de datas considerando dias úteis Empty Re: Cálculo de datas considerando dias úteis

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/9/2019, 06:34