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

    Identificar a recorrência de um dia da Semana.

    Compartilhe

    krsantos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 54
    Registrado : 04/01/2013

    Identificar a recorrência de um dia da Semana.

    Mensagem  krsantos em Ter 14 Nov 2017, 12:54

    Olá pessoal tudo bem!
    Estou quebrando a cabeça e não consegui chegar a uma solução.

    Eu preciso informar uma data qualquer ex: 11/11/2017 e uma função precisa identificar qual o dia da semana e qual a recorrência dele dentro do mês.

    Ex: 1
    11/11/2017 -> Sábado do Mês.

    Ex: 2
    17/11/2017 -> Sexta-Feira do Mês.

    Logo, qualquer data que eu inserir a função precisa identificar qual o dia da semana e qual a recorrência dentro do mês.

    Alguém conhece alguma forma de fazer isso?


    .................................................................................
    Krsantos
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Identificar a recorrência de um dia da Semana.

    Mensagem  thiagomcosta em Ter 14 Nov 2017, 16:09

    Fiz uma função que retorna uma matriz com 2 valores, sendo:
    O primeiro valor (0) retorna o dia da semana
    O segundo valor (1) retorna a quantidade que apareceu naquele mês

    Código:

    Public Function ContaDiaSemana(pData As Date)
    'Criada por Thiago de Mello Costa

    Dim vDiaSemana, vContagem, vDia, vMes, vAno
    Dim vRetorno()

    vDia = Day(pData)
    vMes = Month(pData)
    vAno = Year(pData)
    vDiaSemana = Weekday(pData)
    vContagem = 0

    For i = 1 To vDia
        If Weekday(DateSerial(vAno, vMes, i)) = vDiaSemana Then
            vContagem = vContagem + 1
        End If
    Next

    ReDim vRetorno(2)

    vRetorno(0) = WeekdayName(vDiaSemana)
    vRetorno(1) = vContagem

    ContaDiaSemana = vRetorno

    End Function

    Para testar criei o código abaixo:

    Código:
    Sub TestaFuncaoData()
    Dim vMatriz, vQualData, vOrdinal

    vQualData = InputBox("Digite Data")

    If Not IsDate(vQualData) Then Exit Sub

    vMatriz = ContaDiaSemana(CDate(vQualData))
    If Weekday(vQualData, 2) >= 6 Then
        vOrdinal = "º"
    Else
        vOrdinal = "ª"
    End If

    MsgBox vMatriz(1) & vOrdinal & " " & vMatriz(0) & " do Mês."

    End Sub

    Se alguém souber um jeito de fazer aplicando menos linhas e quiser fazer o favor de disponibilizar.
    Gostaria de fazer isso de um jeito mais simples.

      Data/hora atual: Qua 22 Nov 2017, 20:17