Notifications
Clear all

Excel VBA + Access

6 Posts
3 Usuários
0 Reactions
1,200 Visualizações
(@fcarlosc)
Posts: 0
New Member
Topic starter
 

Bom-dia

Preciso de uma ajuda para alterar um formulário de "ponto eletrônico" onde ele registra a entrada e saída manualmente, o problema é que o intervalo ele registra automaticamente.
Estou tentando mudar para que possa gravar o intervalo manualmente, quando sair e quando voltar.

Agradeço desde já...

Att,

Francisco

 
Postado : 23/11/2016 5:54 am
(@fcarlosc)
Posts: 0
New Member
Topic starter
 

Boa-tarde,

Se alguém puder me ajudar com esse formulário, já tentei algumas formas de gravar o intervalo manualmente, mais não tive êxito.

Att,

Francisco

 
Postado : 24/11/2016 12:37 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vou dar uma olhada a noite!

 
Postado : 01/12/2016 12:08 pm
(@basole)
Posts: 487
Reputable Member
 

Veja se é isso que deseja:

 
Postado : 01/12/2016 8:39 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Na rotina RegistroEntradaSaida, troque esse trecho aqui:

    If MinhaDatabase.EOF Then
        MinhaDatabase.AddNew
        MinhaDatabase("Entrada") = Me.LabelHora
        MinhaDatabase("CódigoFuncional") = Me.TextBoxNumero
        MinhaDatabase("Data") = CDate(Format(Now, "dd/mm/yyyy"))

    Else
        MinhaDatabase2.Open "SELECT * FROM [Funcionários] WHERE CódigoFuncional=" & (TextBoxNumero) & ";", MinhaConexão, adOpenKeyset, adLockOptimistic, adCmdText
        MinutosAleatórios = Int((10 * Rnd) + 1)    ' Gera um valor aleatório entre 1 e 10.
        MinutosAleatórios = CDate("00:" & Format(MinutosAleatórios, "00"))
        MinhaDatabase("InicioIntervalo") = Date & " " & MinhaDatabase2("InícioIntervalo")    '+ MinutosAleatórios 'CDate(Format(Now, "dd/mm/yyyy")) '
        MinhaDatabase("InicioIntervalo") = MinhaDatabase("InicioIntervalo") + MinutosAleatórios
        MinutosAleatórios = Int((10 * Rnd) + 1)    ' Gera um valor aleatório entre 1 e 10.
        MinutosAleatórios = CDate("00:" & Format(MinutosAleatórios, "00"))
        MinhaDatabase("FimIntervalo") = Date & " " & MinhaDatabase2("FimIntervalo")    '- MinutosAleatórios  'CDate(Format(Now, "dd/mm/yyyy")) '
        MinhaDatabase("FimIntervalo") = MinhaDatabase("FimIntervalo") - MinutosAleatórios
        MinhaDatabase("Saida") = Me.LabelHora
    End If

    MinhaDatabase.Update

Por esse:

    If MinhaDatabase.EOF Then
        MinhaDatabase.AddNew
        MinhaDatabase("Entrada") = Me.LabelHora
        MinhaDatabase("CódigoFuncional") = Me.TextBoxNumero
        MinhaDatabase("Data") = CDate(Format(Now, "dd/mm/yyyy"))

    Else
        If VBA.IsNull(MinhaDatabase("InicioIntervalo")) Then
            MinhaDatabase("InicioIntervalo") = Me.LabelHora

        ElseIf VBA.IsNull(MinhaDatabase("FimIntervalo")) Then
            MinhaDatabase("FimIntervalo") = Me.LabelHora

        ElseIf VBA.IsNull(MinhaDatabase("Saida")) Then
            MinhaDatabase("Saida") = Me.LabelHora

        End If
    End If

    MinhaDatabase.Update

Eu coloquei ali um teste para cada campo, na ordem cronológica... Se o cara quer bater cartão e não tem data de inicio de intervalo, ele vai sair pro intervalo. se ele não tem data de retorno, ele está retornando, e se não tem data de saída, está indo embora...

 
Postado : 01/12/2016 8:40 pm
(@fcarlosc)
Posts: 0
New Member
Topic starter
 

Bom-dia,

Obrigado aos dois, funcionou perfeitamente.

Att,

Francisco

 
Postado : 02/12/2016 5:59 am