MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Compartilhe
    avatar
    DaviSilva
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 26/09/2013

    [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Mensagem  DaviSilva em Ter 27 Fev 2018, 16:45

    Ola pessoal, pessoa  ajuda dos mestres.

    Tenho um Formulário com um Sub-Formulário acoplado onde este último esta como folha de dados.

    Tenho um método que tem a função de registrar as alterações que os usuários fazem, ou seja, ele grava a ultima informação alterada do campo e a atual e guarda estas informações externamente.

    A questão é que, isso funciona muito bem até que um usuário resolve copiar e colar mais de 2 campos de uma única vez utilizando o seletor de registros. Conforme imagem abaixo.

    [Você precisa estar registrado e conectado para ver esta imagem.]

    -> O erro é (A expressão que você inseriu requer que o controle esteja na janela ativa.)

    Consegui identificar que, quando se trata do ActiveControl é que ocorre o erro.

    Segue o código onde o ActiveControl gera o erro.

    Código:
    Private Sub Descricao_AfterUpdate()
    On Error GoTo Err_Descricao_AfterUpdate
        
        
         RegistroAlteracao "CadastroITs", Me.ActiveControl.Name, Nz(Me.ActiveControl.OldValue, "Nulo"), Nz(Me.ActiveControl.value, "Nulo"), _
                          Me.Parent.Key, Me.Form.Name, strIdsFilhos, strObservacao, blnCriacao
                          
    Exit_Descricao_AfterUpdate:
        Exit Sub

    Err_Descricao_AfterUpdate:
        MsgBox err.Description
        Resume Exit_Descricao_AfterUpdate
    End Sub

    Estou usando o access 2000, pois a aplicação é bem antiga e não é viável mudar de plataforma no momento.

    No sub-formulário não consegui encontrar um evento do tipo (Ao Colar), para que eu possa tratar o erro

    A única solução que encontrei, é quando gerar o erro, é fazer um On Error resume next, porém se eu fizer isso, e algum usuário colar uma informação em cima da outra, eu perderei a rastreabilidade do que era e o que se tornou o registro.

    Desde já muito obrigado.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Mensagem  Noobezinho em Ter 27 Fev 2018, 21:12

    Davi

    Tanto no formulário continuo como em modo de dados, na propriedade Ao aperta Tecla do Formulário, com

    a propriedade Visualizar Teclas = Sim (é a ultima da aba todas):


    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Me.SelHeight > 1 Then
    MsgBox "pode parar!"
    End If
    End Sub



    [ ]'s
    avatar
    DaviSilva
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 26/09/2013

    Re: [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Mensagem  DaviSilva em Qua 28 Fev 2018, 13:38

    Bom dia pessoal.

    [Noobezinho],

    Muito obrigado pela ajuda, é algo novo que aprendi, mas ainda não resolveria, pois mesmo que eu selecione apenas um registro, o erro persiste. Acredito que seja porque o campo não esteja ativo e meu código diga "Me.ActiveControl.Name".

    Acabei encontrando uma solução. Não é tão dinâmica quanto eu pretendia que fosse mas resolve, pois preciso continuar a desenvolver então.

    O que fiz na verdade, foi que em sub-formulários, aio invés de colocar o parâmetro do metodo como Me.ActiveControl.Name, eu digitei o nome dos campos onde precisava.

    Para os sub-formulários eu alterei o método acrescentando uma string "strNomeCampo" como parâmetro.

    Método:
    Código:

    Sub RegistroAlteracaoLocal(strNomeCampo As String, Optional strIdsFilhos As String, Optional strObservacao As String, Optional blnCriacao As Boolean)
    On Error GoTo Err_RegistroAlteracaoLocal
           
       RegistroAlteracao "CadastroITs", strNomeCampo, Nz(Me(strNomeCampo).OldValue, "Nulo"), Nz(Me(strNomeCampo).value, "Nulo"), _
                         Me.Parent.Key, Me.Form.Name, strIdsFilhos, strObservacao, blnCriacao
       
    Exit_RegistroAlteracaoLocal:
       Exit Sub

    Err_RegistroAlteracaoLocal:

       MsgBox err.Description, , "RegistroAlteracaoLocal"
       Resume Exit_RegistroAlteracaoLocal
       
    End Sub

    Na evento AfterUpdate de cada campo fiz desta forma: (Acabei com os erros do ActiveControl.)
    Código:

    Private Sub Descricao_AfterUpdate()
    On Error GoTo Err_Descricao_AfterUpdate

        RegistroAlteracaoLocal "Descricao", Me.KeyRevisao
                         
    Exit_Descricao_AfterUpdate:
       Exit Sub

    Err_Descricao_AfterUpdate:
       MsgBox err.Description
       Resume Exit_Descricao_AfterUpdate
    End Sub


    Agora me veio uma dúvida de campo, percebi que ao selecionar da mesma forma, com seletor de registro, uma única coluna ou todas em um sub-formulário
    e colar esta informação seja em um registro novo ou atualizando um registro antigo, o evento AfterUpdate ocorre 2 vezes para caixas de combinação e para caixa de texto com mascara de entrada.

    A mesma ação já não ocorre para caixas de texto simples.

    Alguém saberia me explicar se tem como retirar alguma opção dentro do próprio access para isso não ocorrer?
    Ou mesmo me explicar o por que isso ocorre?
    Pois da forma que meu código esta, ele registra a mesma alteração de informação duas vezes para estes tipos de condições.

    Já pensei na possibilidade de criar um código e contar a quantidade de vezes que um campo atualizou, mas se tiver uma maneira menos trabalhosa é bem vinda.
    dese já agradeço.
    avatar
    DaviSilva
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 26/09/2013

    Re: [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Mensagem  DaviSilva em Ter 06 Mar 2018, 19:17

    Alguem?

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Mensagem  Noobezinho em Ter 06 Mar 2018, 20:09

    Davi

    Já depurou o código pra ver se isso acontece mesmo?

    E se acontece, o que está provocando isso?

    avatar
    DaviSilva
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 42
    Registrado : 26/09/2013

    Re: [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Mensagem  DaviSilva em Seg 02 Abr 2018, 21:31

    Então, o pq ocorre não sei explicar.. mas sei que nas combo box sempre ocorre o evento duas vezes... então vou dar esse tópico por encerrado.

    Muito obrigado a todos.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Copiar e Colar gerando erro no ActiveControl

    Mensagem  Noobezinho em Seg 02 Abr 2018, 21:35

    Desistiu?

    Estamos aqui para ajudar.

    Poste a(s) parte(s) envolvida(s) no problema, para a gente analisar.


    [ ]'s

      Data/hora atual: Ter 19 Jun 2018, 01:43