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

    Como bloquear meu formulário?

    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Como bloquear meu formulário?

    Mensagem  Jonatan 10/5/2012, 20:26

    Olá pessoal, mais uma vez queria a ajuda de vocês.
    Antes de mais nada, pesquisei bastante sobre o assunto e até achei alguns tópicos a respeito, mais não consegui entender ou não satisfez a minha dúvida.

    É o seguinte tenho um projeto com 4 tabelas e seus respectivos campos: Clientes (IdentificaçãoCliente, Nome, Endereço e outros dados pessoais) OS (IdentificaçãoOS, IdentificaçãoCliente, Data da Coleta, Forma de Pagamento, Data do Pagamento, ValorPago), Detalhes da OS (IdentificaçãoDetalhesOS, IdentificaçãoOS, IdentificaçãoExame, Preço unitário, Desconto), Exames (IdentificaçãoExame, CódigoExame, Exame, Preço Unitário). Também já criei as relações e o form. OS e um controle guia com um subform. Detalhes da OS e uma segunda guia Pgto. com campos da tabela OS.

    No meu form. principal quero criar dois botões que executem alguns comandos: Concluir, Editar.
    Quando eu clicar em concluir todos os campos do meu form. e subform. deveram ser bloqueados e a alteração só possa ser feita, consequentemente, clicando no botão Editar.

    Também gostaria de criar um campo no subform. Status, quando começar a inserir dados o status esteja como Nova e ao clicar no botão Concluir o mesmo seja marcado como fechado.

    Agradeço desde já toda ajuda.
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 10/5/2012, 20:35


    Olá

    Se o seu objetivo é bloquear o formulário para não permitir que seja editado, não é necessário bloquear os campos individualmente.
    Pode definir a propriedade Permitir edições do form ao clicar no botão: Form.AllowEdits = False.
    Para permitir edições mude para True.
    Idem para o subform.

    No subform, seria um campo texto cujo valor quer definir?

    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 11/5/2012, 15:33

    Olá Norberto Rost, funcionou em partes.
    Vou tentar explicar, o form. principal e a guia Pgto. são baseados na tabela OS e o subform. na tabela Detalhes da OS. Quando insiro um valor no campo Nome, por exemplo, e clico em Concluir, o form. não bloqueia, só depois de inserir um valor no meu subform. a ação é concluída. Se clicar no botão de edição para alterar apenas um dado qualquer no form. e concluir em seguida acontece o mesmo problema.
    Não entendi com inserir o código de bloqueio para meu subform.

    Os botões que criei:

    Concluir: evento Ao Clicar - Form.AllowEdits = False
    Alterar: evento Ao Clicar - Form.AllowEdits = True

    Li em algum lugar que todo controle tem uma propriedade Enabled se colocar como False os controles ficam bloqueados (cinza). Seria se ficasse exatamente desse jeito, quando digitar um novo registro ou alterá-lo o botão Alterar ficasse bloqueado (cinza) e depois que concluir o botão Alterar ficasse habilitado.

    Abraços.
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 11/5/2012, 16:04


    Pode usar Enabled, mas então terá que relacionar cada controle:

    NomeCampo1.Enabled = False
    NomeCampo2.Enabled = False
    ... e assim por diante

    Pode aplicar em massa usando p.ex.:

    For Each ctl In Me.Controls
    If ctl.ControlType = acTextBox Then 'para caixas de texto
    ctl.Enabled = 0 '0 para habilitado(False), -1 para desabilitado(True)
    End If
    Next

    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 14/5/2012, 19:25

    Norberto, fiz o que disse e deu tudo certo, mas quando concluo a ação ela está sendo aplicada em todos os registros inclusive os novos. Tem como aplicar em um registro apenas?
    Achei que o botão ficaria cinza também e não apenas os campos. Há como finalizar e o botão Editar ficar habilitado e o botão Concluir ficar cinza e vice-versa?

    Abraços.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 15/5/2012, 20:23

    Olá Norberto, alguma solução? Ou mais alguém pode ajudar?

    Desde já agradeço.

    Abraços
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 15/5/2012, 20:40


    Acho que a solução é controlar o estado habilitado/desabilitado de cada controle através dos botões:

    Private BotãoDesabilitar_Click()
    NomeCampo1.Enabled = False
    NomeCampo2.Enabled = False
    '... e assim por diante ...
    '... lembrando que os subforms, botões, e outros controles podem se referenciados
    End Sub

    Private BotãoHabilitar_Click()
    NomeCampo1.Enabled = True
    NomeCampo2.Enabled = True
    '... e assim por diante ...
    '... lembrando que os subforms, botões, e qualquer outro controle pode se referenciado
    End Sub

    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 18/5/2012, 14:53

    Olá Norberto, não consegui resolver meu problema, mas agradeço pela ajuda.

    Vou buscar estudar mais sobre VBA e entender seus conceitos.

    Abraços.
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 18/5/2012, 17:14

    Jonatan

    Uma sugestão:

    Use o mesmo código abaixo na propriedade No atual (On Current) do(s) formulários(s)
    para desbloquear as caixas de texto

    For Each ctl In Me.Controls
    If ctl.ControlType = acTextBox Then 'para caixas de texto
    ctl.Enabled = 0 '0 para habilitado(False), -1 para desabilitado(True)
    End If
    Next

    Assim, a cada registro as caixas de textos estarão desbloqueadas

    E bloqueia-se usando o mesmo código como já tem feito

    Abraços
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 1/6/2012, 03:28

    Aguardando o auto do tópico.

    Caso ele não se pronuncie. amanha darei como resolvido.

    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 2/6/2012, 13:01

    Olá, peço mil desculpas por não ter respondido antes. Agradeço muitíssimo sua boa vontade em ajudar. Gostaria muito de entender o VBA e não só copiar, disse isso no meu último comentário.

    Sobre a ajuda, ainda não era o que eu procurava. Ele bloqueia todas a caixas de texto.
    São dois botões que uso: Concluir e Alterar

    Queria que quando concluísse o botão Concluir ficasse desabilitado e ao editar o botão Alterar desabilitasse, mas isso apenas no registro atual.

    Abraços.
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 2/6/2012, 14:04

    O exemplo do nosso amigo Norberto é o correto para você
    Código:

    Private BotãoConcluir_Click()
    Docmd.gotocontrol "BotãoAlterar" ' movo o foco para o outro botão para poder desativar esse.
    Me.BotãoConcluir.Enabled = False

    End Sub

    Private BotãoAlterar_Click()

    Docmd.gotocontrol "BotãoConclur" ' movo o foco para o outro botão para poder desativar esse.
    Me.BotãoAlterar.Enabled = False
    End Sub

    No evento No atual do Formulário:
    Código:

    Me.BotãoConcluir.Enabled = True
    Me.BotãoAlterar.Enabled = True
    Agora, se não consegue ainda programar em VBA, anexe parte do aplicativo para podermos ajudar.
    A dica da minha assinatura é válida Wink
    Abraços
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 4/6/2012, 15:59

    Olá Balem, o código que você passou está funcionando em partes. Ao clicar em um dos botões o mesmo desabilita como esperado, mas ao clicar no outro aparece o seguinte erro:

    Erro em tempo de execução '2110':
    O Microsoft Access não pode mover o foco para o controle Comando31



    Comando31 e Comando33 são os nomes dos botões Concluir e Alterar, respectivamente.

    E também se mudar de registro e voltar para o mesmo os botões voltam ao estado normal.

    Abraços.
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 4/6/2012, 18:13

    Mostre- nos o código que você colocou nesses botões:

    E o código que colocou na propriedade No Atual do formulário
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 5/6/2012, 14:50

    Olá, são esses os códigos:

    Private Sub Comando31_Click()
    Me.AllowEdits = False
    Me.Subformulário_Detalhes_da_OS.Form.AllowEdits = False
    Me.Subformulário_Detalhes_da_OS.Form.AllowAdditions = False
    DoCmd.GoToControl "Comando33" ' movo o foco para o outro botão para poder desativar esse.
    Me.Comando31.Enabled = False
    End Sub

    Private Sub Comando33_Click()
    Me.AllowEdits = True
    Me.Subformulário_Detalhes_da_OS.Form.AllowEdits = True
    Me.Subformulário_Detalhes_da_OS.Form.AllowAdditions = True
    DoCmd.GoToControl "Comando31" ' movo o foco para o outro botão para poder desativar esse.
    Me.Comando33.Enabled = False
    End Sub

    Private Sub Form_Current()
    Me.Comando31.Enabled = True
    Me.Comando33.Enabled = True
    End Sub


    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 5/6/2012, 15:11

    Faltou colocar as linhas em azul.

    Coloque-as e teste. Wink


    Private Sub Comando31_Click()
    Me.Comando33.Enabled = True
    Me.AllowEdits = False
    Me.Subformulário_Detalhes_da_OS.Form.AllowEdits = False
    Me.Subformulário_Detalhes_da_OS.Form.AllowAdditions = False
    DoCmd.GoToControl "Comando33" ' movo o foco para o outro botão para poder desativar esse.
    Me.Comando31.Enabled = False
    End Sub

    Private Sub Comando33_Click()
    Me.Comando31.Enabled = True
    Me.AllowEdits = True
    Me.Subformulário_Detalhes_da_OS.Form.AllowEdits = True
    Me.Subformulário_Detalhes_da_OS.Form.AllowAdditions = True
    DoCmd.GoToControl "Comando31" ' movo o foco para o outro botão para poder desativar esse.
    Me.Comando33.Enabled = False
    End Sub


    Abraços
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 6/6/2012, 14:47

    Balem, funcionou em partes:

    Ao Concluir ou Alterar, a ação está sendo aplicada em todos os registros. Por exemplo, quando concluo e vou para um novo, não é possível adicionar dados no subform., já no form. sim. Devo clicar em alterar para habilitar o novo registro.
    Também ao Concluir ou Alterar, o foco está sendo movido e o botão fica cinza como esperado, mas a ação está sendo aplicada no registro atual. Por exemplo, ao avançar e voltar o botão volta ao estado normal, mas a ação permanece ativa.

    Abraços.

    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 6/6/2012, 15:19

    Um conselho de amigo

    Coloque nome nos seu controles.

    Fica bem mais fácil de visualizar a utilidade do controle, olhando seu nome.

    Agora só vendo o aplicativo para poder ajudar melhor.

    Se puder colocar o form e subform mais as tabelas (parte dos registros) para podermos averiguar e chegar na solução, seria ótimo.

    Abraços
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 6/6/2012, 19:41

    Obrigado pela dica. Desculpa a ignorância, mas como faço pra postar o projeto aqui no fórum? Ou é pra mandar por e-mail?

    Abraços.
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 6/6/2012, 20:25

    É muito simples

    Que o aplicativo seja no formato mdb (Access 2003) assim todos poderão ajudar.

    1- Compacte o aplicativo (mdb e base dados juntos) no formato .zip

    2- Na página onde você digita tua mensagem, logo abaixo tem dois botões:

    - Escolher Arquivo: Escolha o aplicativo compactado
    - Enviar: uma vez escolhido clique nesse botão para enviar o arquivo para o servidor do fórum.
    - Após enviar aparecerá o nome do arquivo e o botão excluir, indicando que o arquivo já foi subido.
    O arquivo anexado não aparece no modo pré visualização.
    Enviar a mensagem normalmente.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 8/6/2012, 14:32

    Desculpe a demora, estava muito ocupado esses dias.

    Abraços.
    Anexos
    Como bloquear meu formulário? AttachmentCadastramento de Exames e Clientes - Cópia (4) - Cópia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (49 Kb) Baixado 101 vez(es)
    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 8/6/2012, 15:59

    Jonatan

    Experimente o código abaixo e veja se é isso que deseja.

    Obs.: Eu mudei os nomes dos botões.

    Código:


    Private Sub btConcluir_Click()
    Me.btAlterar.Enabled = True
    Me.AllowEdits = False
    Me.CtlGuia15.Enabled = False
    'Me.Subformulário_Detalhes_da_OS.Form.AllowEdits = False
    'Me.Subformulário_Detalhes_da_OS.Form.AllowAdditions = False
    DoCmd.GoToControl "btAlterar" ' movo o foco para o outro botão para poder desativar esse.
    Me.btConcluir.Enabled = False
    End Sub

    Private Sub btAlterar_Click()
    Me.btConcluir.Enabled = True
    Me.AllowEdits = True
    Me.CtlGuia15.Enabled = True
    'Me.Subformulário_Detalhes_da_OS.Form.AllowEdits = True
    'Me.Subformulário_Detalhes_da_OS.Form.AllowAdditions = True
    DoCmd.GoToControl "btConcluir" ' movo o foco para o outro botão para poder desativar esse.
    Me.btAlterar.Enabled = False
    End Sub

    Private Sub Form_Current()
    Me.btConcluir.Enabled = True
    Me.btAlterar.Enabled = True
    Me.CtlGuia15.Enabled = True
    End Sub

    O código irá travar o controle guia que contém o subformulário e mais uma página com dados do pagto.

    Abraços
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 8/6/2012, 18:33

    Balem, ainda não é isso que quero. O código anterior estava bom, só que a ação era aplicada em todos os registros inclusive os novos.
    Deveria ser aplicado apenas no atual, e a ação fosse mantida nele mesmo depois de avançar ou voltar pelos registros, mas sempre ficar habilitado para novos.

    Abraços.


    avatar
    Convidad
    Convidado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Convidad 9/6/2012, 00:26

    Jonatan

    Peraí Laughing

    "Deveria ser aplicado apenas no atual, e a ação fosse mantida nele mesmo depois de avançar ou voltar pelos registros, mas sempre ficar habilitado para novos."

    Entendi direito?
    O usuário altera o registro clicando no botão Alterar, faz a alteração necessária e clica no botão Concluir. Então esse registro não poderá ser alterado mais, mesmo saindo dele, indo para outro e retornando. To certo?
    Na realidade não entendi direito qual novo registro, se do formulário principal ou do sub formulário.
    E se for como estou crendo, como será modificado esses dados uma vez que tiverem sido
    alterado e não poderá sofrer mais alteração, se é que serão modificados novamente no futuro. scratch

    Abraços
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 234
    Registrado : 03/05/2012

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Jonatan 11/6/2012, 19:31

    Balem

    O usuário altera o registro clicando no botão Alterar, faz a alteração necessária e clica no botão Concluir. Então esse registro não poderá ser alterado mais, mesmo saindo dele, indo para outro e retornando. To certo?

    Não é assim que funciona. Enquanto está no atual funciona normal, os botões ficam cinza ao clicar e os campos bloqueados ao concluir. Agora ao avançar e volta o botão Concluir volta ao normal e os campos podem ser editados e excluídos. Voltando eles permanecem intactos, mas habilitado para edição e exclusão.

    Como deveria ficar:

    Ex.: Registro 1 - Inseri os dados e conclui; ___________avanço para um Novo (como é um form. com subform. o Novo fica vazio)
    Registro 2 - Insiro os dados mas não concluo; _____________ volto para o 1º e tudo que fiz permanece (o botão Concluir continua cinza e os campos bloqueados)
    Voltando para o 2º os campos podem ser editados, pois não conclui.

    Entendeu?

    Abraços
    avatar
    Marlon.araujo5
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 18
    Registrado : 26/01/2013

    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Marlon.araujo5 18/2/2013, 00:45

    Estou aprovitando esses códigos em meu formulário.


    Por hora, além do código para os botões, estou utilizando no formulário no evento ao abrir. assim ele entra bloqueado. Depois desbloqueio para novas edições.

    Me.AllowEdits = False
    Me.SubFormDetalhePedido.Form.AllowEdits = False
    Me.SubFormDetalhePedido.Form.AllowAdditions = False

    Conteúdo patrocinado


    Como bloquear meu formulário? Empty Re: Como bloquear meu formulário?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 13/5/2024, 14:55