RicoInside 4/11/2012, 15:20
Há mais de uma maneira de restringir o acesso de usuários aos objetos (tabelas, consultas, formulários, etc.) de um BD Access. Observe que utilizei o termo "restringir" e não "impedir". A segurança do Access nesse sentido é deficiente e qualquer um com um pouco mais de conhecimento técnico pode censurado-la. Você pode, por exemplo, atribuir senhas e permissões ou mesmo converter o arquivo para MDE. Nesse último caso, mantenha uma cópia do arquivo original ANTES da conversão pois, uma vez convertido, nem você terá mais acesso ao código VBA e aos objetos se desejar altera-los por qualquer motivo.
Para desabilitar a tecla Shift, experimente criar um módulo com um nome qualquer e insira nele a codificação abaixo (os apóstrofes são comentários):
Sub CriaPropInicializacao(Optional strNomeForm As String)
'Nome do Formulário Inicial
CriaProp "StartupForm", dbText, strNomeForm
'Janela do Banco de Dados
CriaProp "StartupShowDBWindow", dbBoolean, False
'Barra de Status
CriaProp "StartupShowStatusBar", dbBoolean, True
'Barra de Ferramentas internas
CriaProp "AllowBuiltinToolbars", dbBoolean, False
'Menus internos
CriaProp "AllowFullMenus", dbBoolean, False
'Acesso ao codigo após ocorrer erro
CriaProp "AllowBreakIntoCode", dbBoolean, False
'Altere para False para Teclas especiais (CTRL+G)
CriaProp "AllowSpecialKeys", dbBoolean, False
'Altere para False para Bloquear Tecla Shift
CriaProp "AllowBypassKey", dbBoolean, False
End Sub
Function CriaProp(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
On Error GoTo Sai 'Aciona o tratamento de erro
Dim dbs As Database, prp As Property
Const conPropNotFoundError = 3270
Set dbs = CurrentDb
dbs.Properties(strPropName) = varPropValue
CriaProp = True
Sai_Function:
Set dbs = Nothing
Exit Function
Sai:
' Se a propriedade não existe, então cria
If Err = conPropNotFoundError Then
Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
dbs.Properties.Append prp
'Retorna ao ponto
Resume Next
Else
' Error desconhecido
CriaProp = False
Resume Sai_Function
End If
End Function
E também no evento "Open" do formulário inicial do seu aplicativo, insira:
Call CriaPropInicializacao("Inicial")
...onde "Inicial" é o nome do seu Formulário principal
ATENÇÃO que uma vez feito isso nunca mais ira conseguir abrir seu projeto!!! Pode ser até que existe uma maneira, mas eu nunca consegui!!!
Por isso, faça sempre um Backup antes de fazer isso e enviar para o Usuário!!!
Fonte: Spiritwalker membro do iMasters