amilq Posted December 12, 2022 at 05:12 PM Report Share #628781 Posted December 12, 2022 at 05:12 PM (edited) Olá amigos; Eu terminei um projeto para distribuição e tenho uma dúvida, para a qual peço a vossa ajuda. Tenho instalada a versão 2019 do Office. Passos de segurança realizados: 1) Compilei o código VB da base de dados. 2) Desabilitei a tecla Shift por código num formulário escondido. Criei um atalho num formulário, de forma que não é percetível. Esse atalho leva ao formulário com dois botões. Um para habilitar e o outro para desabilitar o SHIFT. Está a funcionar muito bem. O utilizador entra no formulário de login, escolhendo o nome de utilizador e inserindo a palavra passe. Se tentar entrar com Shift, vai direto ao login. 3) Converti a base de Accdb para Accde. Desta forma o utilizador não tem acesso ao código, para o caso de se abrir a janela para debug. Agora eu queria dividir a base em back-end e front-end. Sei como o fazer, mas pergunto: É possível o utilizador continuar a entrar no login da front-end, escolhendo o nome e inserindo a palavra passe e encriptar só a back-end, para impedir o acesso? Sei que mesmo assim é possível entrar na bd, mas já ficaria com uma segurança aceitável. Um grande abraço; Joaquim Edited December 12, 2022 at 05:13 PM by amilq Link to comment Share on other sites More sharing options...
Solution Luis_vxd Posted December 13, 2022 at 08:51 AM Solution Report Share #628791 Posted December 13, 2022 at 08:51 AM Bom dia Joaquim O BE (back-end) é uma base de dados normal que precisa de ser protegida. Tudo o que fez está perfeito para o FE (front-end) mas depois de separar o BE fica sem proteção. O método mais comum é proteger o BE com uma password e depois 're-link' o FE. Este processo de re-link tem de ser feito cada vez que a BD é mudada de um sítio para outro seja dentro do mesmo computador (para outra pasta) ou para outro computador. Sugiro que em VBA crie uma rotina, que é executada sempre que o FE arranca, para verificar o link e refazê-lo caso a BD tenha sido mudada. Boa sorte. Cumprimentos Luis https://programar-excel.pt Link to comment Share on other sites More sharing options...
amilq Posted December 13, 2022 at 09:10 AM Author Report Share #628793 Posted December 13, 2022 at 09:10 AM (edited) Bom dia Luís. Não sei como fazer a rotina, mas vou procurar ajuda para isso. Se pudesse ajudar-me na rotina seria ótimo, mas se não puder não faz mal. Agora sei os passos necessários para o que queria fazer. Obrigado e boas festas. Um abraço. Joaquim Edited December 13, 2022 at 09:47 AM by amilq Acrescentei mais texto. Link to comment Share on other sites More sharing options...
carlosAl Posted December 14, 2022 at 07:37 AM Report Share #628854 Posted December 14, 2022 at 07:37 AM Public Function AtualizaVinculos(EndBackend As String) As Boolean 'Atualiza os vínculos Dim db As dao.Database Dim tdf As dao.TableDef Dim strResultado As String Set db = CurrentDb() For Each tdf In db.TableDefs If tdf.Connect <> "" Then If tdf.Connect <> EndBackend Then tdf.Connect = ";Database=" & EndBackend End If On Error Resume Next tdf.RefreshLink If Err <> 0 Then strResultado = strResultado & tdf.Name & vbCrLf Err.Clear End If End If Next tdf If strResultado = "" Then AtualizaVinculos = True Else MsgBox "As seguintes tabelas não foram vinculadas:" & _ vbCrLf & strResultado, vbCritical, "Erro" AtualizaVinculos = False End If End Function Link to comment Share on other sites More sharing options...
amilq Posted December 14, 2022 at 07:41 AM Author Report Share #628855 Posted December 14, 2022 at 07:41 AM Bom dia amigo; O código é inserido no formulário de login, ao abrir? Link to comment Share on other sites More sharing options...
carlosAl Posted December 14, 2022 at 04:05 PM Report Share #628904 Posted December 14, 2022 at 04:05 PM (edited) Bom dia , Nao sei como desenhou a sua base de dados, no meu caso tenho num botao de um formulario, mas voce poderia colocar em algum evento do seu formulario Login A Funcao AtualizaVinculos , retorna uma variavel do tipo Boolean ( true ou false) Assim que no seu formulario de Login, poderia executar algo parecido com o seguinte : If Len(Nz(Me.EnderecoBackend, " "))) > 0 Then If AtualizaVinculos(Me.EnderecoBackend) = True Then MsgBox "Vínculos actualizados com sucesso.", vbInformation Me.VerificarVinculos = 0 End If Else MsgBox "Arquivo não encontrado", vbCritical, "Erro" End If Claro que devera tambem criar um campo de texto (EnderecoBackEnd), que recolha o campo na sua tabela onde identifica o path que contem o caminho para o seu back end, ou como opçao tambem pode criar um botao com janelas de dialogo para esse path Edited December 14, 2022 at 04:07 PM by carlosAl Link to comment Share on other sites More sharing options...
amilq Posted December 15, 2022 at 07:53 AM Author Report Share #628919 Posted December 15, 2022 at 07:53 AM Bom dia Carlos; Está resolvido. Obrigado Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now