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


    Logs em formulario com sub formulario

    avatar
    wlca
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 02/10/2013

    Logs em formulario com sub formulario Empty Logs em formulario com sub formulario

    Mensagem  wlca 12/9/2015, 12:20

    Bom dia a todos, adaptei alguns  módulos e funções para pegar logs e gerar um arquivo txt, o modulo funciona perfeitamente com o formulário criado, só que refiz o mesmo formulário sendo que agora com um sub formulário em sua estrutura e agora a função “pegar log” não pega os dados inseridos ou atualizados/editados no sub formulário, alguém poderia me ajudar a ajustar esta função para que a mesma possa pegar as alterações feitas nos dados do sub formulário também, grato e fico no aguardo, segue abaixo os códigos dos módulos:

    ‘ Colocada no formulário (evento) antes de atualizar, após inserir e ao excluir
    Function PegaLogs(StrTipo As String)
    ''Declaração das variáveis.
       Dim db As Database, rslog As Recordset
       Dim Frm As Form, i As Integer
       Dim strLog As String
             
    ''Fim da declaração das variáveis.
       
       Set db = CurrentDb
       Set rslog = db.OpenRecordset("tbl_Logs") ''Tabela onde vão ser salvo os registros de log.
       Set Frm = Screen.ActiveForm
       
       For i = 0 To Frm.Controls.Count - 1
           ''Campos aceitaveis que a função de log ira reconhecer.
           If TypeOf Frm.Controls(i) Is TextBox Or TypeOf Frm.Controls(i) Is ComboBox Or TypeOf Frm.Controls(i) Is CheckBox Or TypeOf Frm.Controls(i) Is OptionGroup Or TypeOf Frm.Controls(i) Is ListBox Then
    ''Se for um registro novo, executa esta IF
               If StrTipo = "Novo" Then
                   If strLog = "" Then
                       strLog = Frm.Controls(i).Name & ": " & Frm.Controls(i).value
                   Else
                       strLog = strLog & ", " & Frm.Controls(i).Name & ": " & Frm.Controls(i).value
               End If
     ''Fim da IF verificação de novo registro.
           Else
     ''Verifica se foi uma exclusão de registro.
               If StrTipo = "Excluido" Then
                   If strLog = "" Then
                       strLog = Frm.Controls(i).Name & ": " & Frm.Controls(i).value
                   Else
                       strLog = strLog & ", " & Frm.Controls(i).Name & ": " & Frm.Controls(i).value
                   End If
     ''Fim da verificação de exclusão.
               Else
     ''Se for uma alteração de registro ele faz a verificação.
                   If Frm.Controls(i).OldValue <> Frm.Controls(i).value Then
                       If strLog = "" Then
                           strLog = Frm.Controls(i).Name & ": " & Frm.Controls(i).OldValue & " -> " & Frm.Controls(i).value
                       Else
                           strLog = strLog & ", " & Frm.Controls(i).Name & ": " & Frm.Controls(i).OldValue & " -> " & Frm.Controls(i).value
                       End If
     ''Fim da verificação de alteração de registro.
                   End If
               End If
           End If
       End If
       

    Next
    rslog.AddNew
    rslog("Nome do Formulario") = Frm.Name
    rslog("Tipo") = StrTipo
    rslog("Logs") = strLog
    If CHECA_FORM("PROCESSO SUBFORM") = True Then
    'rslog("ID_Do_Registro") = Forms!PROCESSO SUBFORM!NR_PROC
    rslog("Maquina") = Environ("ComputerName")
    rslog("Data") = Now
    rslog("Usuario") = Environ("username")
    On Error Resume Next
    rslog.Update
    rslog.Close
    db.Close

    Else

       If CHECA_FORM("Processo MOD II") = True Then
       'rslog("ID_Do_Registro") = Forms!Processo MOD II!NR_PROC
       rslog("Maquina") = Environ("ComputerName")
       rslog("Data") = Now
       rslog("Usuario") = Environ("username")
       On Error Resume Next
       rslog.Update
       rslog.Close
       db.Close

    End If
    End If

    End Function




    'Função: colocar no modulo e chamar no formulário
    Function CHECA_FORM(Formulario As String) As Boolean
    Select Case CurrentProject.AllForms(Formulario).IsLoaded
    Case True
    CHECA_FORM = True
    Case False
    CHECA_FORM = False
    End Select

    End Function

    ‘Colocada no formulário (evento) ao fechar
    Function CriarArquivoLOGAtv()

    'On Error GoTo TratarErro
    Dim Cabecalho As String
    Dim Arquivo As String



       DoCmd.OutputTo acOutputReport, "TABELA_LOGS", acFormatXLS, "C:\BASE DE DADOS\Logs\LogAtv_ " & Format(Date, "YYYY-MM") & ".log.XLS"
       DoCmd.OutputTo acOutputReport, "TABELA_LOGS", acFormatTXT, "C:\BASE DE DADOS\Logs\LogAtv_" & Format(Date, "YYYY-MM") & ".log.TXT"
      If Dir("C:\BASE DE DADOS\Logs\LogAtv_" & Format(Date, "YYYY-MM") & ".log", vbDirectory) = "" Then

    Cabecalho = "ID;TIPO;FORMULARIO;LOGs;USUARIO;DATA"
    'Open Arquivo For Output As #1
       'Print #1, Cabecalho
           
    Close #1

    End If

    CriarArquivoLOGAtv = Arquivo

    SairFunction:
    Exit Function

    TratatarErro:
    MsgBox Err.Description, vbCritical, " Erro " & Err.Number
    Resume SairFunction
    End Function


    E a primeira vez que posto no fórum, espero que tenha postado no lugar certo, caso tenha errado, solicito ao administrador do fórum orientação para que a postagem fique no lugar certo. Grato e fico no aguardo de alguma solução.

      Data/hora atual: 22/11/2024, 11:58