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]Passar dados campo chave primaria para tabela log de exclusão

    avatar
    cmedeiros
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 60
    Registrado : 29/05/2016

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  cmedeiros 27/10/2023, 00:32

    Senhores, boa noite

    Estou apanhando bastante de uma situação... onde preciso da ajuda de vocês.

    Pesquisando aqui no fórum encontrei uma codificação criada pela JPaulo, onde registra o log de exclusão de registros em uma tabela, que foi bastante útil diga-se de passagem. Porém preciso fazer algumas adaptações para que ela funcione a partir de um modulo.

    Em uma dessas adaptações preciso passar os dados dos campos tipo chave primaria para a função.

    Alguém poderia me ajudar informando como posso identificar campos com essa característica, de forma que eu não precise nomear, pois como eu disse trata-se de uma modulo que terá a função chamada em vários formulários distintos.

    Abaixo parte da codificação para ajudar no entendimento:

    Onde está o ponto de interrogação, seria onde preciso de uma maneira para que o modulo identifique o campo que contenha chave primaria.

    Dim strRegitro As String

    strRegistro = ?
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  JPaulo 27/10/2023, 11:44

    Olá

    Com esta função, você consegue obter o nome do campo que é chave primária nas tabelas;

    Para chamar a função:
    Código:
    Call ObterChavePrimaria("SuaTabela")

    Código:
    Public Function ObterChavePrimaria(strTabela As String)
    '*******************************************
    'By JPaulo
    'www.maximoaccess.com
    'OUT/2023
    Dim db As DAO.Database
    Dim td As DAO.TableDef
    Dim PrimariaLoop As DAO.Index

    Set db = CurrentDb
    Set td = db.TableDefs(strTabela)
    For Each PrimariaLoop In td.Indexes
    If PrimariaLoop.Primary = True Then
    Debug.Print Mid(PrimariaLoop.Fields, 2)
    Exit For
    End If
    Next PrimariaLoop

    db.Close
    Set db = Nothing
    End Function


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Instruções SQL como utilizar...
    avatar
    cmedeiros
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 60
    Registrado : 29/05/2016

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  cmedeiros 27/10/2023, 15:17

    JPaulo, bom dia

    Primeiramente obrigado pelo retorno breve.

    Na solução que enviou para obter o campo que contém a chave primaria é feito através de um modulo onde ele deve ser chamado por um Call. Certo?

    Mas por pouco conhecimento meu, eu não consegui implementar sua solução para passar o campo com chave primaria do formulário para a função que ira efetuar o log na tabela de histórico.

    Vou encaminhar o código completo da função que estou usando, talvez ajuda a esclarecer essa minha duvida.

    Código:
    'By JPaulo :registered: Maximo Access
    Dim apaga As Integer
    Dim alerta As String
    Dim strRegitro As String
    Dim strUser As String
    Dim strForm As String
    Dim strMaquina As String
    Dim strSQL As String

    strUser = DLookup("usuarioLogado", "tblUsuarioLogadoFrontEnd")
    strForm = Form.Name
    strRegistro = ?
    strMaquina = Environ("COMPUTERNAME")
    apaga = MsgBox("Confirma excluir o registro:" _
    & vbCr & " " & strRegistro & "  ?", vbOKCancel + vbCritical, "Atenção!")
        Select Case apaga
            Case vbOK 'se for SIM, adiciona à tabela de Log e de seguida deleta
    strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, Computador, Registro, Status) Values('" & strUser & "', Now(),'" & strForm & "','" & strMaquina & "','" & strRegistro & "','" & "Registro Excluído" & "')"
    DoCmd.RunSQL strSQL
          
                DoCmd.RunCommand acCmdDeleteRecord
            Case vbCancel
                Exit Sub
        End Select
    End Sub


    Conforme informei na mensagem inicial do tópico, o local onde preciso informar o campo de chave primaria é na strRegistro, onde está o ponto de interrogação.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  JPaulo 27/10/2023, 16:31

    Olá

    Dei uma melhorada em todo o trecho de código e transformei em Sub Publico para todos os seus formulários.

    1º Copie e cole num módulo, a variável e o Sub abaixo
    2º Para chamar o Sub no botão de deletar registro em qualquer form




    Código:
    'variável que obtem o nome do form
    Public strFormName$

    Public Sub SecurityLog()
    '*******************************************
    'By JPaulo
    'www.maximoaccess.com
    'OUT/2023
    Dim apaga As Integer
    Dim alerta As String
    Dim strRegitro As String
    Dim strUser As String
    Dim strForm As String
    Dim strMaquina As String
    Dim strSQL As String
    Dim strSourceTable As String
    Dim db As DAO.Database
    Dim td As DAO.TableDef
    Dim PrimariaLoop As DAO.Index
    Dim rs As DAO.Recordset

    Set db = CurrentDb

    'obter nome do form
    strForm = strFormName

    Set rs = Access.Forms(strForm).Recordset

    'obter usuario logado
    strUser = Nz(DLookup("usuarioLogado", "tblUsuarioLogadoFrontEnd"), 0)

    'obter nome da maquina
    strMaquina = Environ("COMPUTERNAME")

    'obter nome da tabela da origem do form
        With Access.Forms(strForm)
            strSourceTable = .Recordset.Fields(.Controls(rs(0).Name).ControlSource).SourceTable
        End With
     
    'coloca o nome da tabela na variavel
    strTabela = strSourceTable

    Set td = db.TableDefs(strTabela)
    For Each PrimariaLoop In td.Indexes
        If PrimariaLoop.Primary = True Then
            'encontra o nome do campo chave primaria
            strRegistro = Mid(PrimariaLoop.Fields, 2)
            'obtem o valor que se encontra nesse campo de chave primaria
            strRegistro = Access.Forms(strForm).Controls(strRegistro).Value
            Exit For
        End If
    Next PrimariaLoop

    db.Close
    Set db = Nothing

    'faz a pergunta
    apaga = MsgBox("Confirma excluir o registro:" _
    & vbCr & " Nº " & strRegistro & "  ?", vbOKCancel + vbCritical, "Atenção!")

        Select Case apaga
            Case vbOK 'se for SIM, adiciona à tabela de Log e de seguida deleta
    strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, Computador, Registro, Status) Values('" & strUser & "', Now(),'" & strForm & "','" & strMaquina & "','" & strRegistro & "','" & "Registro Excluído" & "')"

           DoCmd.SetWarnings False
                DoCmd.RunSQL strSQL
                DoCmd.RunCommand acCmdDeleteRecord
           DoCmd.SetWarnings True
            Case vbCancel
                Exit Sub
        End Select
    End Sub


    Código:
    Private Sub SeuBotaoDeletar_Click()
    'limpa a variavel
    strFormName = ""
    'deposita o nome do form na variavel
    strFormName = Form.Name
    'chama o Sub
        Call SecurityLog
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Instruções SQL como utilizar...
    avatar
    cmedeiros
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 60
    Registrado : 29/05/2016

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  cmedeiros 27/10/2023, 20:02

    JPaulo,

    Fiz os teste com o código melhorado que enviou, porém deu erro ao chamar a função no botão "exlcuir", veja:

    Erro ao clicar do botão excluir:

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Erro10

    Linha do código que apresentou o erro:

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Linha_10
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  JPaulo 27/10/2023, 20:41

    Amigão, está a funcionar perfeitamente.

    Envie o seu banco para o meu email por favor
    Código:
    jpaulo65@gmail.com
    .


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Instruções SQL como utilizar...
    avatar
    cmedeiros
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 60
    Registrado : 29/05/2016

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  cmedeiros 27/10/2023, 20:47

    Certo...

    Eu vou copiar essa parte do banco original e encaminho no e-mail

    avatar
    cmedeiros
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 60
    Registrado : 29/05/2016

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  cmedeiros 29/10/2023, 12:53

    JPaulo, bom dia


    Apenas para confirmar. Recebeu meu e-mail com parte do BD, enviado na sexta-feira?
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  JPaulo 30/10/2023, 10:22

    Olá

    Recebi sim.
    Isso acontece porque você não está a trabalhar diretamente no form, está a trabalhar com controle de guia e dessa forma terá de ter sempre um campo direto no form, que eu já adicionei e poderá ficar oculto (se você pretender);

    Nota:
    Acrescentei mais um campo na tabela para identificar o nome do campo chave primária e ao lado o ID desse campo.
    Anexos
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão AttachmentbdTeste_OLD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (76 Kb) Baixado 5 vez(es)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Instruções SQL como utilizar...
    avatar
    cmedeiros
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 60
    Registrado : 29/05/2016

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  cmedeiros 30/10/2023, 17:20

    Certo JPaulo

    Eu entendi sua explicação, vou da uma olhada e vê a melhor de adaptar ao sistema com o menor impacto possível, pois são varias tabelas e formulários existentes em todo o BD.


    Assim que possível, darei um retorno.

    Muito obrigado por enquanto.
    avatar
    cmedeiros
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 60
    Registrado : 29/05/2016

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  cmedeiros 3/11/2023, 12:27

    JPaulo, bom dia

    Fiz os devidos testes e funcionou perfeitamente... apenas terei que fazer os ajustes nos forms onde estiver trabalhando com controle de guia.

    Meu muito obrigado.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  JPaulo 4/11/2023, 17:55

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Passar dados campo chave primaria para tabela log de exclusão Empty Re: [Resolvido]Passar dados campo chave primaria para tabela log de exclusão

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 14:32