Ir para conteúdo
Fórum Script Brasil
  • 0

Bloqueio de cópia de tabelas


RJBeto

Pergunta

Boa tarde

Estou com um Banco de Dados em Acces de uso em rede para multi-usuários com definições de acesso para cada tipo de usuário.

O que fiz foi o seguinte:

Dividi em duas bases, onde o que fica para o uso está com tabelas vinculadas do Banco Principal, que está escondido em outro local da rede.

Coloquei uma senha para acesso ao banco de dados e um formulário de entrada (definido nas opções do banco como formulário de exibição) que em função de uma senha individual dá acesso à difentes formulários em função de seu perfil. Ao passar pelo formulário de entrada automaticamente a função Shift+Enter é desabilitada e só é habilitada quando é clicado em um local da tela que somente eu sei onde fica.

Entretanto, percebo que mesmo com a techa Shift+Enter desabilitada, é possível abrir um novo Banco e  através dele copiar as tabelas, fazer qualquer alteração e voltar com ela modificada em sua estrutura ou dados para o meu Banco de origem.

Como posso bloquer a cópia de tabelas do meu Banco para um outro Banco?

Tentei usar uma autoexec com SendKeys enviando a senha do Banco para que não fosse necessário a sua digitação e somente eu a pudesse conhecer. Mas... o SendKeys com a senha só entra depois de acessado o Banco e vai direto para o formulário de acesso individual.

Grato

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Resolvido

Fiz desta forma:

O Banco BackEnd fica em rede protegido por senha.

O Banco FrontEnd fica instalado em máquinas dos usuários, com tabelas vinculadas ao Back e com senha de acesso que à princípio o usuário deveria conhecer para poder usar.

Para não fornecer a senha ao usuário criei um terceiro Banco que acessa ao Front, este com senha fornecida ao usuário, o qual chamei de “Abrir sistema”.

O Banco Abrir Sistema é composto por:

                Uma Macro autoexec que chama a função Libera.

                Uma função Libera que envia comando com senha para abertura do Banco Front.

Em caso de erro, por qualquer manipulação pelo usuário no endereço do Front, este fecha e envia mensagem para acionamento do administrador.

Caso não tenha erro, o Front abre com os acessos vinculados ao Back e o “Abrir Sistema” fecha automaticamente.

Desta forma o Front na máquina do usuário estará protegido porque este não sabe sua senha.

Sem o acesso ao Front e também como o Back é protegido por senha, toda a estruturação do sistema e dados, estará protegida contra manipulações indesejadas.

O banco “Abrir Sistema”, não permite o uso da tecla “Shift+Enter” e mesmo sabendo a senha de entrada, o usuário não poderá copiar o código por meio de outro banco paralelo porque os códigos VBA estão protegidos também por senha inserida em “Ferramentas; Propriedades database; Proteção com bloqueio do projeto para exibição”. Este mesmo tipo de bloqueio foi feito no Front e no Back.

Seguem os códigos do banco Abrir Sistema

                Módulo AbrirMenu - Função Libera

Function Libera()

 

Const DB_Boolean As Long = 1  'DESABALITA SHIFT+ENTER

    ChangeProperty "AllowBypassKey", DB_Boolean, False 'DESABALITA SHIFT+ENTER

 

Dim Pass As Variant

Static objaccess As Access.Application

Dim db As DAO.Database

Pass = "SENHA DO MEU FRONT"

Dim strDbName As String

strDbName = "C:\ENDEREÇO DO MEU BANCO.accdb"

Set objaccess = New Access.Application

'On Error GoTo Sai 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO – SUGIRO FAZER UMA CÓPIA DESTE ANTES DE HABILITAR A SAÍDA EM CASO DE ERRO, POIS A TECLA SHIF+ENTER TAMBÉM ESTARÁ BLOQUEADA

Set db = objaccess.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=" & Pass)

objaccess.OpenCurrentDatabase filepath:=strDbName

objaccess.Visible = True

 

'Retornasai: 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO

DoCmd.Quit 'FECHA O "ABRIR SISTEMA"

'Exit Sub 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO

 

'Sai: 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO

' MsgBox "OCORREU ALGUM ERRO. PROCURE O ADMINISTRADOR DO SISTEMA!" 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO

'Resume Retornasai 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO

End Function

'-------------------------------------------------------------------

Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer

 

Dim dbs As Object, prp As Variant

Const conPropNotFoundError = 3270

 

Set dbs = CurrentDb

On Error GoTo Change_Err

dbs.Properties(strPropName) = varPropValue

ChangeProperty = True

 

Change_Bye:

Exit Function

 

Change_Err:

If Err = conPropNotFoundError Then ' Propriedade não encontrada.

Set prp = dbs.CreateProperty(strPropName, _

varPropType, varPropValue)

dbs.Properties.Append prp

Resume Next

Else

' Erro desconhecido.

ChangeProperty = False

Resume Change_Bye

End If

End Function

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...