[resolvido] Calculo para Adicional Noturno

Moderador: Avelino Sampaio

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

[resolvido] Calculo para Adicional Noturno

Mensagempor Claudio Machado » 14 Set 2017, 13:07

Bom dia galera.
Tenho este módulo abaixo que estou tentando adaptar para exibir o resultado das horas extras executadas entre 22:00 horas de hoje e 05:00 do dia seguinte conforme lei trabalhista para adicional noturno.

No após atualizar do campo Hora_Sai coloquei este código:

Código: Selecionar todos

Quant_Ad_Not = totalHoraNoturna


O sistema exibe a mensagem: O argumento não é opcional.

Código: Selecionar todos


Function totalHoraNoturna(dataInicial As Date, dataFinal As Date) As Long

Dim intHoraInicio As Integer
Dim intHoraFim As Integer

intHoraInicio = IIf(Hour(Hora_Ent) < 22 And Hour(Hora_Ent) > 6, 22, Hour(Hora_Ent))
intHoraFim = IIf(Hour(Hora_Sai) > 6 And Hour(Hora_Sai) <= 22, 6, Hour(Hora_Sai))

If intHoraInicio >= 22 Then
    If intHoraFim > 22 Then
        horaNoturna = intHoraFim - intHoraInicio
    Else
        horaNoturna = 24 - intHoraInicio + intHoraFim
    End If
Else
    horaNoturna = intHoraFim - intHoraInicio
End If

End Function



Obrigado
Última edição por Claudio Machado em 20 Set 2017, 13:47, editado 2 vezes no total.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 14 Set 2017, 13:39

Claudio

ele está reclamando que vc não inseriu a data inicial e a data final, na função:

Código:
Quant_Ad_Not = totalHoraNoturna(entrar com a data inicial, entrar com a data final)


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 14 Set 2017, 14:59

Olá Avelino meu amigo.
Na verdade não é data e sim hora.
Não entendi como descrevo esse código.
Obrigado

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 14 Set 2017, 15:39

Claudio,

altere sua função para:

Código:
Function totalHoraNoturna(Hora_Ent As Date, Hora_Sai As Date) As Long

Dim intHoraInicio As Integer
Dim intHoraFim As Integer

intHoraInicio = IIf(Hour(Hora_Ent) < 22 And Hour(Hora_Ent) > 6, 22, Hour(Hora_Ent))
intHoraFim = IIf(Hour(Hora_Sai) > 6 And Hour(Hora_Sai) <= 22, 6, Hour(Hora_Sai))

If intHoraInicio >= 22 Then
If intHoraFim > 22 Then
totalHoraNoturna = intHoraFim - intHoraInicio
Else
totalHoraNoturna = 24 - intHoraInicio + intHoraFim
End If
Else
totalHoraNoturna = intHoraFim - intHoraInicio
End If

End Function


E teste:

Código:
Quant_Ad_Not = totalHoraNoturna(#11:20:00 PM#,#02:30:00 AM#)


Nota: Essa sua função só esta levando em conta a hora cheia.

Lembrando que eu tenho projeto desses no aplicativo Telemax. Veja neste meu artigo:

http://www.usandoaccess.com.br/blog/blog9.asp?id=1#inicio

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 14 Set 2017, 20:33

Obrigado Avelino.
Eu tenho o Telemax
Só que ele não calcula as horas automáticamente.
Temos de digitar tudo.

O que estou desenvolvendo já faz os cálculos das horas extras mesmo se for após 24 horas, o que preciso é que nesse campo (Quant_Ad_Not) após digitar a hora de entrada e hora de saída da hora extra. (Ex: 19:30 ás 03:30). Ele pegue somente o horário das 22:00 até ás 05:00 se for o caso) e jogue nesse campo.

O meu pega a hora cheia: 08:00 hs total. Quando na verdade deverias ser: 05:00 noturnas.

Mas vou analisar.
Última edição por Claudio Machado em 15 Set 2017, 12:42, editado 1 vez no total.

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 15 Set 2017, 12:28

Bom dia Avelino.
Agora não acontece nada...
Alterei o campo para:

Código: Selecionar todos

Quant_Ad_Not = totalHoraNoturna(Hora_Ent, Hora_Sai)


Está certo assim?

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 15 Set 2017, 13:42

Claudio,

não está certo. Vc tem que entrar com os valores nos argumentos(hora_ent e Hora_sai) da função.

Assim:

Código:
Quant_Ad_Not = totalHoraNoturna(#19:00:00 PM#, #03:30:00 AM#)  :::>  tem como resultado 5 horas


ou assim, caso suas informações de horas estejam em campos do formulário:

Código:
Quant_Ad_Not = totalHoraNoturna(Me!NomeDoCampoHoraEntrada, Me!NomeDoCampoHoraSaida)


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 15 Set 2017, 18:25

Mas o nome dos campos do meu form são Hora_Ent e Hora_Sai.

Se eu colocar como mensagem tipo:

MsgBox totalHoraNoturna(Hora_Ent, Hora_Sai)

Exibe os valores corretamente, só que não imprime os valores no campo, só na mensagem.

Loucura isso.

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 15 Set 2017, 19:56

Claudio,

acrecente o ME!

Código:
me!Quant_Ad_Not = totalHoraNoturna(Me!Hora_ent, Me!Hora_sai)


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 15 Set 2017, 20:30

Nem por decreto!
Nunca ví isso.
Tô pirando!!

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 15 Set 2017, 21:25

Cláudio,

baixe o exemplo, abra o formulário de teste e preencha os campos hora entrada e hora saída. Após preencher hora de saída, o cálculo e apresentado corretamente.

Aguardamos
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 18 Set 2017, 12:39

Bom dia Avelino.
Realmente no seu exemplo funciona perfeitamente.
Mas o campo resultado (Quant_ad_not) não está formatado como horas.
Se formatar ele não exibe o resultado.
O problema está ai.
O campo na minha tabela está como Hora abreviada e no form também.
Além do quê este resultado está me trazendo as horas inteiras, não trás o resultado real.

Obrigado pela ajuda amigo.

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 18 Set 2017, 14:03

Claudio,

creio então que basta transformar para o formato hora, utilizando a função TimeSerial(), ficando assim:

Código:
Me!Quant_ad_not = TimeSerial(totalHoraNoturna(Me!Hora_ent, Me!Hora_sai), 0, 0)


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 18 Set 2017, 15:06

Perfeito Avelino!

O único problema agora é que o resultado está me trazendo as horas inteiras, não trás o resultado real.

Exemplo:

Entrada: 22:30
Saída: 02:30
Resultado real: 03:30

Ele está exibindo: 04:00

Seria formatação?

Obrigado

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 18 Set 2017, 20:44

Claudio

utilizando o meu exemplo, altere a função para:

Código:
Function totalHoraNoturna(Hora_ent As Date, Hora_sai As Date)

Dim intHoraInicio
Dim intHoraFim
Dim he
Dim hs
Dim m&

he = Split(Hora_ent, ":")
hs = Split(Hora_sai, ":")
intHoraInicio = IIf((he(0) * 60) + he(1) < 1320 And (he(0) * 60) + he(1) > 360, 1320, (he(0) * 60) + he(1))
intHoraFim = IIf((hs(0) * 60) + hs(1) > 360 And (hs(0) * 60) + hs(1) <= 1320, 360, (hs(0) * 60) + hs(1))

If intHoraInicio >= 1320 Then
If intHoraFim > 1320 Then
m = intHoraFim - intHoraInicio
Else
m = 1440 - intHoraInicio + intHoraFim
End If
Else
m = intHoraFim - intHoraInicio
End If
totalHoraNoturna = TimeSerial(m \ 60, m Mod 60, 0)
End Function


E na chamada:

Código:
Me!Quant_ad_not = totalHoraNoturna(Me!Hora_ent, Me!Hora_sai)


Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 18 Set 2017, 21:19

Está calculando corretamente amigo Avelino.
Mas com tantos números nesta função, me perdi completamente. Rsrs

Só um pequeno detalhe.
Se eu digitar qualquer horário de saída até ás 22:00 ele me dá o resultado de 08:00 noturnas.
Independente da hora de entrada.

Quando na verdade deveria ser 00:00

Outra coisa, como calculo a quantidade de horas pelo valor da hora do funcionário?
Estou efetuando os cálculos assim:

Código: Selecionar todos

Valor_Ad_Not = ([Salario] / 220) * 20 / 100 * totalHoraNoturna(Me!Hora_ent, Me!Hora_sai)


Antes deste código que me passou funcionava, agora ele me dá outro resultado que não têm nada a ver.

Só falta isso para finalizar amigo.
Desculpa o incômodo, mas sou fraco com cálculo de horas ainda.
Obrigado pela força.

Avatar do usuário
Avelino Sampaio
Mensagens: 1895
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Calculo para Adicional Noturno

Mensagempor Avelino Sampaio » 19 Set 2017, 09:03

Claudio

segue mais uma modificação. O resultado da função retorna o valor em MINUTOS.

Código:
Function totalHoraNoturna(Hora_ent As Date, Hora_sai As Date)
Dim intHoraInicio
Dim intHoraFim
Dim he, ment
Dim hs, msai
Dim m&

he = Split(Hora_ent, ":")
hs = Split(Hora_sai, ":")
ment = (he(0) * 60) + he(1)
msai = (hs(0) * 60) + hs(1)

If (msai > ment) And (msai <= 1320) And (ment > 360) Then
totalHoraNoturna = 0
Exit Function
End If

intHoraInicio = IIf(ment < 1320 And ment > 360, 1320, ment)
intHoraFim = IIf(msai > 360 And msai <= 1320, 360, msai)

If intHoraInicio >= 1320 Then
If intHoraFim > 1320 Then
m = intHoraFim - intHoraInicio
Else
m = 1440 - intHoraInicio + intHoraFim
End If
Else
m = intHoraFim - intHoraInicio
End If
totalHoraNoturna = m
End Function


E no evento "após atualizar" da hora de saída:

Código:
Private Sub Hora_sai_AfterUpdate()
Dim tan
tan = totalHoraNoturna(Me!Hora_ent, Me!Hora_sai) 'valor em minutos
Me!Quant_ad_not = TimeSerial(tan \ 60, tan Mod 60, 0)
'Salário= R$3.200,00
' 13200 minutos = 220 horas

Me!Van = (3200 / 13200) * 0.2 * tan
End Sub


Aguardamos
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

Avatar do usuário
Claudio Machado
Mensagens: 23
Registrado em: 14 Out 2015, 22:11

[resolvido] Re: Calculo para Adicional Noturno

Mensagempor Claudio Machado » 20 Set 2017, 13:46

Bom dia Avelino.
Perfeito meu amigo.
Obrigado imensamente pela ajuda.

Grande Abraço.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Módulos VBA”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 6 visitantes