Impedindo a abertura de formulário pelo Painel de Navegação
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Na maioria dos projetos é utilizado um formulário principal ou ribbons como uma forma de navegar pelo aplicativo, sem que o usuário tenha acesso ao Painel de Navegação. Entretanto, há uma série de projetos, em que o acesso ao Painel de Navegação se faz necessário e em muitos casos é preciso restringir a abertura direta de certos formulários e relatórios; ou porque eles dependem de informações de outros formulários, para funcionarem corretamente; ou porque possuem dados sigilosos, que não podem ser acessados por qualquer usuário.
Isto é bem fácil de se programar. Podemos passar, através do comando DOCMD, um valor qualquer para um formulário ou relatório , utilizando o argumento chamado OpenArgs. De posse deste valor, o formulário ou o relatório pode usá-lo para várias situações e uma delas é a de impedir a sua abertura.
Se o usuário, então, tentar abrir o formulário diretamente pelo Painel de Navegação, a propriedade OpenArgs deste formulário estará com o valor nulo e aí programamos para que nesta situação não seja possível a abertura.
Veja o código do evento "ao abrir" do formulário como fica:
Faça o login aqui para ter acesso ao código.
A função Nz detecta se o valor do OpenArgs é nulo, substituindo-o pelo valor zero. Na comparação temos 0=0 como condição verdadeira e o mecanismo de cancelamento é executado(cancel=true).
Para que seja possível a abertura do formulário nesta condição, temos que passar um valor qualquer diferente de zero para o OpenArgs. E isto é feito através do comando DOCMD. Veja o código abaixo:
Faça o login aqui para ter acesso ao código.
O comando passará o valor 3 para a propriedade OpenArgs do formulário. No evento "ao abrir" a condição IF se tornará falsa (3=0), permitindo a abertura do formulário.
Observe que qualquer valor diferente de nulo ou zero permitirá a abertura do formulário, possibilitando uma brecha na segurança. Vamos fazer uma inversão no método: ao invés da abertura do formulário ser com qualquer valor, vamos permitir que ele seja aberto somente com valores específicos.
Veja o código modificado:
Faça o login aqui para ter acesso ao código.
Significa que para qualquer valor diferente de 3, o formulário não se abrirá. Perceba que podemos utilizar outros "case" para atender às necessidades distintas na abertura do formulário.
Reforço na segurança
Transformando o seu aplicativo para extensão ACCDE e utilizando a programação descrita acima para impedir a abertura de certos formulários e relatórios, dificultará bastante o invasor, caso este entre no seu Painel de Navegação, sem a devida autorização.
Assista o vídeo e veja como isto funciona na prática.
Faça o login aqui para ter acesso ao vídeo.
Artigos Relacionados
Carregando formulário na inicialização do Access
Desabilitando o Painel de Navegação
Vídeo - Como configurar o Painel de Navegação
2 comentário(s) Jefferson Almeida 04/03/2021 20:16:30 E quando este form é um sub-formulário? Como eu defino OpenArgs sem abrir o form? MARCIO MELO MARTINS 03/04/2020 11:33:00 Ótima solução encontrada, eu usava a função IsLoaded comparando quais forms poderiam ser abertos..., passar adotar a sua até porque mesmo quando usamos na prática o OpenArgs para levar algum valor já habilita a abertura do formulário. Bem que você poderia montar um curso de access aqui no RJ, nunca fiz um curso até porque quando tentei fazer só ensinavam a abrir o access e inserir dados na tabela, fui aprendendo na net com apostilas e hoje estou me reciclando com uma didática super moderna, parabéns mais uma vez... ainda nem instalei o access 2007, já adquiri seu MontaRibbons, estou para fechar negócio num notebook melhor para registrar definitivo, por isso ainda não informei..., o meu atual sinto que o access 2007 vai pesar um pouco... estou super ansioso para aplicar o que venho aprendendo aqui... Sou mais Brasil! |