bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Impedindo a abertura de formulário pelo Painel de Navegação

... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Impedindo a abertura de formulário pelo Painel de Navegação

Antes de iniciar sua leitura, clique aqui e cadastre-se para receber comunicados sobre novos artigos.

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:

Private Sub Form_Open(Cancel As Integer)
If Nz(Me.OpenArgs, 0) = 0 Then Cancel = True
End Sub

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:

DoCmd.OpenForm "NomeDoFormulário", , , , , , 3
 
Ou
 
DoCmd.OpenForm "NomeDoFormulário", OpenArgs:=3

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:

Private Sub Form_Open(Cancel As Integer)
Select Case Me.OpenArgs
  Case 3
    Exit Sub
  Case Else
    Cancel = True
End Select
End Sub

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.

Vídeo


 

Faça o login aqui para ter acesso ao vídeo.

 


 

 


2 comentário(s)

MARCIO MELO MARTINS   03/04/2010 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!

Jefferson Almeida   04/03/2013 20:16:30

E quando este form é um sub-formulário? Como eu defino OpenArgs sem abrir o form?


Envie seu comentário: