MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Compartilhe

    miguel_team
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 24/11/2012

    Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  miguel_team em Ter 09 Set 2014, 22:23

    Olá a todos,

    Tenho este exemplo que calcula da data/hora final com base num tempo de tarefa.

    Pretendia indicar data/hora inicial e final e me informasse o tempo da tarfefa..

    Alguém me pode ajudar?

    Obrigado
    Anexos
    expediente.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (109 Kb) Baixado 16 vez(es)

    percoski
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 248
    Registrado : 27/02/2013

    Re: Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  percoski em Ter 09 Set 2014, 22:35

    Olá, não olhei o seu bd, mas acho que esse tutorial do mestre Avelino pode t ajudar....

    [Você precisa estar registrado e conectado para ver este link.]

    miguel_team
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 24/11/2012

    Re: Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  miguel_team em Qua 10 Set 2014, 08:08

    Já vi esse exemplo mas não consigo chegar lá..

    Podes dar uma olhada no meu exemplo?
    Muito obrigado

    percoski
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 248
    Registrado : 27/02/2013

    Re: Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  percoski em Qua 10 Set 2014, 15:10

    No artigo do Avelino tem um link para do exemplo baixa e veja se dá para adaptar para voce [Você precisa estar registrado e conectado para ver este link.]

    miguel_team
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 24/11/2012

    Re: Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  miguel_team em Qua 10 Set 2014, 18:55

    Eu já vi o exemplo, o problema é que não consigo adaptar ao que eu quero..
    No meu exemplo penso que seja simples modificar para o que eu quero, mas não percebo muito de código vba.

    Agradecia-te imenso se me pudesses ajudar..Obrigado

    percoski
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 248
    Registrado : 27/02/2013

    Re: Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  percoski em Qua 10 Set 2014, 23:30

    faz o seguinte, faça o banco e poste o seu banco com a dúvida ai fica mais facil para t ajudar

    miguel_team
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 24/11/2012

    Re: Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  miguel_team em Qui 11 Set 2014, 21:47

    O código é este:

    Option Compare Database
    Option Explicit

    Function dataFinalTarefa(argDataInicial As Date, argTempo As String) As Variant
    '===========================================================
    'Função que calcula uma data e hora final a partir de uma data
    'e hora inicial somando-se uma quantidade de horas referentes
    'a uma tarefa.
    '
    'Autor: Plinio Mabesi
    'Contato: [Você precisa estar registrado e conectado para ver este link.]
    'Novembro - 2009
    '
    '===========================================================

    Dim horaInicial As Double, horaFinal As Double
    Dim inicioExpediente As Double, fimExpediente As Double
    Dim inicioCafe As Double, fimCafe As Double
    Dim inicioAlmoco As Double, fimAlmoco As Double
    Dim TempoTarefa As Double
    Dim totalExpediente As Double
    Dim totalCafe As Double
    Dim totalAlmoco As Double
    Dim restante As Double
    Dim numeroDias As Integer
    Dim teste As Double
    Dim i As Integer

    'Configuração dos dados iniciais. Para personalizar
    'basta alterar os valores a serem utilizados.
    inicioExpediente = converteHoraDouble("07:00")
    inicioCafe = converteHoraDouble("09:00")
    fimCafe = converteHoraDouble("09:15")
    inicioAlmoco = converteHoraDouble("11:30")
    fimAlmoco = converteHoraDouble("12:30")
    fimExpediente = converteHoraDouble("17:00")

    TempoTarefa = converteHoraDouble(argTempo)

    totalCafe = fimCafe - inicioCafe
    totalAlmoco = fimAlmoco - inicioAlmoco
    totalExpediente = fimExpediente - inicioExpediente - totalAlmoco - totalCafe

    horaInicial = converteHoraDouble(Format(Hour(argDataInicial), "00") & ":" & Format(Minute(argDataInicial), "00"))

    numeroDias = ((horaInicial + TempoTarefa - inicioExpediente) * 10000) \ ((totalExpediente + 0.0001) * 10000)

    If horaInicial < inicioExpediente Or horaInicial > fimExpediente Or (horaInicial >= inicioCafe And horaInicial < fimCafe) Or (horaInicial >= inicioAlmoco And horaInicial < fimAlmoco) Then
    dataFinalTarefa = "Hora inicial inválida!"
    Exit Function
    End If

    dataFinalTarefa = argDataInicial

    For i = 1 To numeroDias

    Do
    dataFinalTarefa = dataFinalTarefa + 1
    Loop Until diaUtil(dataFinalTarefa)

    Next i

    horaFinal = horaInicial + TempoTarefa

    If horaInicial < inicioCafe And horaFinal > inicioCafe Then
    horaFinal = horaFinal + totalCafe
    End If

    If horaInicial < inicioAlmoco And horaFinal > inicioAlmoco Then
    horaFinal = horaFinal + totalAlmoco
    End If

    If horaFinal > fimExpediente Then
    horaFinal = horaFinal - fimExpediente
    horaFinal = Round(horaFinal, 3) - Round(((horaFinal * 1000) \ (totalExpediente * 1000)) * totalExpediente, 3)
    horaFinal = horaFinal + inicioExpediente
    End If

    If horaFinal > inicioCafe And numeroDias > 0 Then

    horaFinal = horaFinal + totalCafe

    If horaFinal > inicioAlmoco Then

    horaFinal = horaFinal + totalAlmoco

    If horaFinal > fimExpediente Then
    restante = horaFinal - fimExpediente
    horaFinal = inicioExpediente + restante
    Do
    dataFinalTarefa = dataFinalTarefa + 1
    Loop Until diaUtil(dataFinalTarefa)
    End If

    End If

    ElseIf horaFinal = inicioExpediente Then
    horaFinal = fimExpediente
    End If

    dataFinalTarefa = CDate(Day(dataFinalTarefa) & "/" & Month(dataFinalTarefa) & "/" & Year(dataFinalTarefa) & _
    " " & Fix(horaFinal) & ":" & Round((horaFinal - Fix(horaFinal)) * 60))

    End Function

    Function converteHoraDouble(argHora As String) As Double

    Dim lngHora As Long, dblMinuto As Double

    lngHora = CInt(Left(argHora, 2))
    dblMinuto = CDbl(Right(argHora, 2))
    dblMinuto = (dblMinuto * 100) / 60

    converteHoraDouble = lngHora + dblMinuto / 100

    End Function

    Function converteHoraTexto(argHora As Double) As String

    Dim intHora As Integer, intMinuto As Integer

    intHora = Fix(argHora)
    intMinuto = (argHora - intHora) * 100
    intMinuto = (intMinuto * 60) / 100

    converteHoraTexto = Format(intHora, "00") & ":" & Format(intMinuto, "00")

    End Function


    No Formulario "Ao Abrir":

    Private Sub Form_Open(Cancel As Integer)
    DoCmd.MoveSize , , 12 * 567, 16 * 567
    End Sub



    miguel_team
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 24/11/2012

    Re: Ajuda código vba - Calculo entre data/hora tomando em conta fim de semana e horário laboral

    Mensagem  miguel_team em Qua 17 Set 2014, 08:31

    Obrigado pela resposta marci percoski.... deus te pague na mesma moeda!!

      Data/hora atual: Dom 04 Dez 2016, 14:13