MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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

2 participantes

    [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela

    avatar
    wmantovani
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 159
    Registrado : 06/09/2011

    [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela Empty [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela

    Mensagem  wmantovani 3/7/2019, 15:02

    Boa dia pessoal, tenho um bd de horas extras e esta funcionando tudo ok, porem agora haverá corte nas horas extras, e isso será variável de acordo com o mês, por exemplo esse mês será de 60 horas mês, no mês que vem poderá ser de 40 horas, mês. Pensei em criar uma tabela com o valor de horas extras limite no mês, como por exemplo tlblimitemes, campo formato horas abreviado 60:00, ate aqui tudo sem problemas

    Tenho essa consulta que faz a pesquisa dentro do mês/ano corrente com base na inserção da data da execução do serviço
    SELECT tblServidores.MATRÍCULA, tblHorasExtras.NOME, tblHorasExtras.[QUANTIDADE EXTRA], tblHorasExtras.[QUANTIDADE FERIADA], tblHorasExtras.[QUANTIDADE BANCO], tblHorasExtras.DATA_EXECUÇÃO, tblServidores.LOCAL_TRABALHO
    FROM tblServidores INNER JOIN tblHorasExtras ON tblServidores.NOME = tblHorasExtras.NOME
    WHERE (((tblHorasExtras.NOME)=[Formulários]![formHorasExtras]![NOME]) AND ((tblHorasExtras.DATA_EXECUÇÃO) Between [Formulários]![formHorasExtras]![DATA_EXECUÇÃO] And DateSerial(Year([Formulários]![formHorasExtras]![DATA_EXECUÇÃO]),Month([Formulários]![formHorasExtras]![DATA_EXECUÇÃO])+1,0)))
    ORDER BY tblHorasExtras.NOME;

    Porem quero que ao inserir a data de execução o banco faça a pesquisa na tabela e se for superior ao limite estabelecido na tabela tlblimitemes exiba uma msgbox, já tentei algumas coisas mas estou perdido de como fazer isso.
    avatar
    renpv
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 323
    Registrado : 12/01/2015

    [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela Empty Re: [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela

    Mensagem  renpv 3/7/2019, 19:00

    Você pode usar dois recordsets. Um vai buscar os dados dos servidores e outro (pode ser um DLookup) para buscar o limite de horas para aquele mês.
    Depois faz um loop para verificar quais os servidores tem horas extras acima do permitido.

    Outra possibilidade é fazer primeiro o Dlookup com limites de horas e usar como argumento para a query que busca os servidores.
    avatar
    wmantovani
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 159
    Registrado : 06/09/2011

    [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela Empty Re: [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela

    Mensagem  wmantovani 3/7/2019, 20:29

    Cheguei perto do que preciso,

    usei alguns exemplos aqui do forum mas algo ainda esta errado,

    usei a funcao

    ‘**************************************************
    '‘Módulo escrito por Luiz Cláudio C. V. Rocha
    '‘Data: 20/3/2001
    '‘Funções para se trabalhar com horas acima de 24h
    '‘**************************************************

    Public Function HrStr(dblHora As Double) As String
    '‘Pega um valor numérico e o converte para Horas/Minutos
    '‘Ex: 123,5 = “123:30”
    '‘Ex: 23,9833333333333 = “23:59”

    Dim strHoras As String
    Dim strMinutos As String


    '‘Pega as horas (parte inteira)
    strHoras = CStr(Fix(dblHora))


    '‘Pega os minutos
    strMinutos = Format$(Abs((dblHora - Fix(dblHora)) * 60), "00")


    '‘Verifica se o total de minutos é 60
    If strMinutos = "60" Then
    strMinutos = "00"
    strHoras = CStr(CDbl(strHoras) + 1)
    End If


    '‘Concatena os dois
    HrStr = strHoras & ":" & strMinutos


    End Function



    e antes de atualizar o campo que faz a consulta

    Dim rs As Recordset
    Dim mensagem As String
    Dim total As String

    Set rs = CurrentDb().OpenRecordset("select * from [tempHorasMes] where [NOME] = NOME ")

    While Not rs.EOF

    mensagem = "O TOTAL DE HORAS EXTRA NO MÊS É DE: " & Chr(13)
    mensagem = mensagem & HrStr(rs("EXTRAS")):
    rs.MoveNext
    Wend
    MsgBox mensagem
    rs.Close
    End Sub

    porem o resultado deveria ser de 36 horas, mas ele mostra 11:05, e to desde cedo mexendo nisso e nao sei onde to errando,,,obrigado a quem puder ajudar



    avatar
    wmantovani
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 159
    Registrado : 06/09/2011

    [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela Empty Re: [Resolvido]Mensagem BOX, ao estourar o limite mensal com base no cadastro em uma tabela

    Mensagem  wmantovani 4/7/2019, 15:46

    Consegui resolver pessoal

    Private Sub NOME_AfterUpdate()

    Dim rs As Recordset
    Dim mensagem As String

    DoCmd.OpenQuery "limpartblTempHoras", , acReadOnly
    DoCmd.OpenQuery "qry_HorasExtrasMes", , acReadOnly

    Set rs = CurrentDb().OpenRecordset("select * from [qrytempHorasMes] where [NOME] = NOME ")

    While Not rs.EOF

    mensagem = "O TOTAL DE HORAS MÊS É DE: " & Chr(13) & vbCrLf
    mensagem = mensagem & "Extras : " & HrStr(rs("Extras")) & vbCrLf
    mensagem = mensagem & "Feriadas : " & HrStr(rs("Feriadas")) & vbCrLf
    mensagem = mensagem & "Banco de horas: " & HrStr(rs("Bancos")) & vbCrLf & vbCrLf
    mensagem = mensagem & "Extras + Feriadas: " & HrStr(rs("Total")) & vbCrLf

    rs.MoveNext
    Wend
    MsgBox mensagem, vbInformation, "Horas já executadas !"
    rs.Close





    End Sub

      Data/hora atual: 1/8/2021, 11:16