Ir ao conteúdo
  • Cadastre-se

Proteger A Estrutura Do Bd


popbrasilis

Posts recomendados

  • 2 semanas depois...
  • Membro VIP

Olá,

Seu tópico já tem alguns dias, espero que já tenha encontrado a solução, porém se ainda não encontrou acho que agora talvez eu possa ajudar.

Estava agora há pouco vendo uns tópicos de um Fórum estrangeiro, procurando algo que não tinha nenhuma ligação com Access, mas acabei encontrando uma dica que pode evitar que a janela do banco de dados seja aberta mesmo segurando a tecla SHIFT.

Antes de mais nada, faça um backup do banco de dados Access que você for usar para fazer esse teste, ou então use algum outro que você tenha certeza de que não vai mais precisar para nada.

1) Na janela do banco de dados, clique na guia Módulos

2) Clique no botão Novo. Vai abrir uma janela do VBA, onde você vai colocar o seguinte código:

Public Sub TravarSHIFT()
   
   Dim Base As Database, Propriedade As Property
   
   Set Base = CurrentDb
   On Error GoTo Erro
   Base.Properties("AllowBypassKey") = False
   
Erro:

   If Err = 3270 Then
       Set Propriedade = Base.CreateProperty("AllowBypassKey", dbBoolean, False)
       Base.Properties.Append Propriedade
       Resume Next
   Else
       Exit Sub
   End If
   
End Sub

3) Salve esse módulo no banco de dados, com qualquer nome.

4) Provavelmente você tem um Formulário que é aberto na inicialização do arquivo MDB. Se não tem, vai ter que criar um Formulário apenas para poder chamar a rotina TravarSHIFT.

Neste Formulário, entre em Estrutura do Formulário. Acesse as propriedades do Formulário (não as propriedades de Detalhes) e na guia Eventos, procure na lista o item Ao carregar e selecione Procedimento do evento. Clique no botão com três pontinhos, que fica ao lado.

Vai abrir outra janela do VBA, com o evento Private Sub Form_Load(): é aqui que você vai chamar a rotina TravarSHIFT, conforme o exemplo abaixo:

Private Sub Form_Load()
   TravarSHIFT
End Sub

5) Simplesmente salve o Formulário

6) Estou considerando que você sabe como colocar um Formulário na inicialização do arquivo MDB. Se acaso você não sabe, é só seguir os passos daqui em diante:

7) No menu Ferramentas, escolha o comando Inicializar....

8) Na janela Inicializar, no campo Exibir Formulário, selecione aquele Formulário onde você fez o passo 4 acima.

9) Claro que se o objetivo é não mostrar a janela do banco de dados para evitar de ver a estrutura, você deve desabilitar a caixa Exibir janela do banco de dados. Desabilite também todos os outros itens que você achar necessário.

Pronto. Feche o MDB e agora é só testar!

Nunca mais ninguém vai abrir a janela do banco de dados desse MDB segurando a tecla SHIFT (nem você :D ), por isso é bom ter backup ANTES de fazer isso.

Espero que isso ajude, boa sorte!

B)

Link para o comentário
Compartilhar em outros sites

:wacko:

Olá Clement,

Velho valeu mesmo por essa dica. Pensei que nunca iria conseguir fazer isto.

Mas está dando um erro quando compilo e corrijo o BD, aparece uma msn: inválido fora de um procedimento e bla bla bla.

Tirei uma foto do erro mas aqui no Fórum não vai dar para você ver.

Tentei fazer o código sem a palavra "CODE" antes, mas mesmo assim dá um grilo.

Pô Man, agradeço muito sua colaboração...

:muro::bored::looka:

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Postado Originalmente por popbrasilis@20 jun 2004, 02:59

Tentei fazer o código sem a palavra "CODE" antes, mas mesmo assim dá um grilo.

Ah sim, o CODE é um "tag" aqui do Fórum, ele aparece se a gente usa o botão "CODE" quando vai responder um tópico, não tem absolutamente nenhuma ligação com o código VBA que eu passei.

Ou seja: copie APENAS o que estiver DENTRO do quadro branco. Só isso.

Por exemplo, para o Módulo: você vai copiar o código no primeiro quadrado branco, desde o "Public Sub TravarSHIFT()" anté o "End Sub".

E no Formulário, quando você abrir a janela do VBA do jeito que eu te falei (reveja o passo 4), automaticamente já vai aparecer o evento "Form_Load", mas vai aparecer sem nada dentro, assim:

Private Sub Form_Load()

End Sub

Aí você só chama a rotina "TRavarSHIFT" dentro dele, assim:

Private Sub Form_Load()
  TravarSHIFT
End Sub

Mas não repita o "Form_Load", o erro pode estar acontecendo aí. Não pode ficar assim:

Private Sub Form_Load()

End Sub

Private Sub Form_Load()
  TravarSHIFT
End Sub

senão vai dar erro mesmo.

Você seguiu à risca conforme eu passei? Além de um certo conhecimento com o ambiente do Access, se fizer tudo direito garanto que dá certo (acabei de fazer aqui de novo, só pra ter certeza).

Se continuar o erro, anote a mensagem que aparece e poste aqui.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Ok Man...

Eu fiz um curso de programação e tenho um bom conhecimento em access, apesar de que todos os projetos q faço no mesmo não uso Módulos...

Tenho um projeto bala no access....Tem o form principal, fiz tudo que você falou acima...sendo que agora aparece uma msgbox:

Microsoft Visual Basic

Erro de compilação: O tipo definido pelo usuário não foi definido.

Na tela do vb fica amarelo dando ênfase nisto:

Public Sub TravarSHIFT()

Dim Base As Database, Propriedade As Property

Tentei colocar este cod no evento Ao Abrir do Form, mas da o mesmo erro...

Tá ###### esse shift...

:muro::angry:

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Ok, vamos tentar mais uma vez, agora de uma forma mais simples, sem muita explicação detalhada:

Coloque um módulo (você DEVE colocar um módulo, mesmo nunca tendo usado isso antes, do contrário não vai dar certo) e cole o código que está em vermelho, à seguir:

Public Sub TravarSHIFT()

Dim Base As Database, Propriedade As Property

Set Base = CurrentDb

On Error GoTo Erro

Base.Properties("AllowBypassKey") = False

Erro:

If Err = 3270 Then

Set Propriedade = Base.CreateProperty("AllowBypassKey", dbBoolean, False)

Base.Properties.Append Propriedade

Resume Next

Else

Exit Sub

End If

End Sub

Não é para colocar esse código no FORM, mas APENAS no MÓDULO.

...

Feito isso, aí sim você vai abrir a janela de código do seu FORM PRINCIPAL, e vai colocar esse código abaixo, que está em vermelho:

Private Sub Form_Load()

TravarSHIFT

End Sub

É apenas isso.

...

Mais uma vez eu testei aqui e funcionou perfeitamente, então acredito que você deve ter colocado todo o código dentro do seu Form Principal, mas assim não vai dar certo mesmo.

Agora sem usar módulos, fica impossível fazer algo mais, digamos, avançado. Programar só dentro de Forms, definitivamente não dá.

[]'s

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!