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

    Ajuda com implementação de código

    Compartilhe
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 317
    Registrado : 20/07/2010

    Ajuda com implementação de código

    Mensagem  OLDRIVG em 22/10/2018, 19:01

    Prezados, boa tarde.

    Estou tentando implementar o código abaixo em um formulário, mas não está funcionando a contento:


    If (Me.PaginaMovimentacoes.Visible) = True Then

    MsgBox "ESCOLHA UMA OPÇÃO PARA CONTINUAR?", vbInformation, "                               USUÁRIO"
    End If

    If Not IsNull(Me.Arquivar1) Then
    Me.DestinoMovimentacao1.SetFocus
    Me.LocalArquivo1.SetFocus
    Else
    End If


    A intenção é a seguinte:
    No Controle de Guia existe a página "PaginaMovimentacoes" que tem o grupo de opções "Arquivar1". Caso tiver alguma seleção neste grupo de opções, após o cursor sair, o foco deveria ir para o campo " DestinoMovimentacao1) se a seleção for 2 e ir para o campo "LocalArquivo1" se a opção for 1. O erro que está acontecendo é que a rotina não acha o campo "LocalArquivo1" se ele não estiver visivel, situação que ocorre se o campo "DestinoMovimentacao1" estiver visível e vice versa.

    Desta feita, alguém saberia me ajudar/informar se há condicões de criar uma rotina que permita tal situação? Ou seja, em um mesmo grupo de opções realizar duas ou mais condições? Desde já agradeço.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 333
    Registrado : 23/01/2017

    Re: Ajuda com implementação de código

    Mensagem  thiagomcosta em 22/10/2018, 21:18

    Bem confuso o que perguntou, mas pelo que eu entendi após escolher Arquivar1 tem que fazer uma ação. Se a opção for 1 faz uma coisa e se for 2 faz outra.

    O código ficaria assim:
    Código:
    If Me.Arquivar1=1 Then
      Me.DestinoMovimentacao1.visible = true
      Me.LocalArquivo1.visible = false
      Me.DestinoMovimentacao1.SetFocus
    Elseif Me.Arquivar1=2 then
      Me.DestinoMovimentacao1.visible = false
      Me.LocalArquivo1.visible = true
      Me.LocalArquivo1.SetFocus
    End If

    Se for possível tente sempre anexar formulário à sua pergunta.
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 317
    Registrado : 20/07/2010

    Re: Ajuda com implementação de código

    Mensagem  OLDRIVG em 23/10/2018, 12:15

    Prezado Thiagomcosta, bom dia.
    Agradeço a atenção.

    Realmente ficou meio confusa a minha explanação. A sugestão que enviou já está em uso porém sem o Elseif. Vou tentar detalhar mais a situação.

    1- Ao entrar no Grupo de Opções "Arquivar1", é exibida a Msgbox "ESCOLHA UMA OPÇÃO PARA CONTINUAR?", vbInformation, "USUÁRIO"
    2- Caso o usuário escolha a Opção "SIM(1)", o campo "LocalArquivo1" é exibido. Caso o usuário escolha a Opção "Não(2)", é exibido os campos "DestinoMovimentacao1" e "MotivoSaidaMovimentacao1".
    3- Mesmo após selecionada alguma das Opções, caso o usuário volte a entrar no Grupo de Opções "Arquivar1", é novamente exibida a MsgBox e, clicando em "OK" na MsgBox, o foco permanece no Grupo de Opções.
    4- O que se pretende é que quando se clicar em "OK" na MsgBox o foco vá para o campo "LocalArquivo!", caso ele esteja visível; ou caso o campo "DestinoMovimentacao1" esteja visível, o foco vá para ele.
    5- O erro está ocorrendo quando um dos campos, "DestinoMovimentacao1" ou LocalArquivo", está invisível. Ocorrendo o erro, surge a janela de depuração do VBA.

    Desta feita, a pretensão é evitar o erro. Ou então, criar uma rotina que após o Grupo de Opções "Arquivar1" tiver uma das opções selecionada não seja possível receber foco novamente, pois está movimentação já estará concluída.

    Seria Possível?

    Em anexo segue um protótipo do BD para elucidação e/ou facilitar em alguma ajuda. Vide registro 1, por gentileza.
    Agradecido.
    Anexos
    PROTOCOLO - Prototipo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (440 Kb) Baixado 9 vez(es)
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 333
    Registrado : 23/01/2017

    Re: Ajuda com implementação de código

    Mensagem  thiagomcosta em 26/10/2018, 19:38

    Não achei o campo Arquivar1.

    Mas vamos lá:
    Antes de dar o foco no campo desejado coloque ele como visivel. Veja no código que eu fiz anteriormente que primeiro ele coloca o valor de visible para true para depois dar o foco no controle.

    Quanto a aparecer a mensagem somente quando não for selecionado, pode colocar para verificar se o controle é nulo (IsNull), neste caso mostra a mensagem, caso contrário exibe e move o foco para o controle especifico, conforme o valor de Arquivar1.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 317
    Registrado : 20/07/2010

    Re: Ajuda com implementação de código

    Mensagem  OLDRIVG em 27/10/2018, 13:16

    Bom dia, Thiagomcosta. Agradeço a atenção.

    Ainda não testei. Farei na segunda.

    Estou respondendo para escrever que o campo "Arquivar1! está na aba "Moimentacões" do controle guia. Clique na aba e você verá os 4 campos "Arquivar" 1, 2, 3 e 4.
    Obrigado.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 333
    Registrado : 23/01/2017

    Re: Ajuda com implementação de código

    Mensagem  thiagomcosta em 29/10/2018, 16:41

    Olhei rapidinho, ta meio corrido agora, mas veja se dá uma ajuda, uma luz:

    O código verifica se Arquivar1 é nulo, se for faz a pergunta.
    Depois oculta e exibe os campos conforme a necessidade.
    Por último joga o foco no campo desejado.

    Código:
    If IsNull(Me.Arquivar1) Then
        If MsgBox("ESCOLHA UMA OPÇÃO PARA CONTINUAR?", vbInformation, "USUÁRIO") = vbYes Then
            Me.Arquivar1 = 1
        Else
            Me.Arquivar1 = 2
        End If
    End If
    If Me.Arquivar1 = 1 Then
        Me.DestinoMovimentacao1.Visible = True
        Me.MotivoSaidaMovimentacao1.Visible = True
        Me.ProcRetMovimentacao1.Visible = True
        Me.LocalArquivo1.Visible = False
        Me.DestinoMovimentacao1.SetFocus
    Else
        Me.DestinoMovimentacao1.Visible = False
        Me.MotivoSaidaMovimentacao1.Visible = False
        Me.ProcRetMovimentacao1.Visible = False
        Me.LocalArquivo1.Visible = True
        Me.LocalArquivo1.SetFocus
    End If

      Data/hora atual: 26/3/2019, 15:02