MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Definindo a senha em vez de pedir por Inputbox

    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 08/12/2013

    [Resolvido]Definindo a senha em vez de pedir por Inputbox Empty [Resolvido]Definindo a senha em vez de pedir por Inputbox

    Mensagem  webruxim 14/7/2016, 21:16

    Boa noite pessoal.

    Alguma alma caridosa poderia me ajudar. Este módulo atualiza uma tabela vinculada no meu programa.

    O problema é o seguinte, nescessito muito de deixar o banco de dados com senha para que ninguem consigua mexer em algo no codigo e fazer besteira.

    O código abaixo atualiza normalmente sem nenhum problema quando o banco de dados não tem senha, e quando tem senha ele abre uma inputbox para informar a senha e fazer a atualização.

    Eu gostaria de mudar, trocar a inputbox que pede a senha pela senha do banco de dados assim ele não pediria a senha e atualizaria minha tabela direto.

    Obrigado a quem puder ajudar.

    Código:
    Option Compare Database

    Dim SenhaBD As String

    Public Sub AtualizarTabela()
        Dim Banco As String
        Dim Atualizado As Boolean
        
        'Armazena o caminho do arquivo
        Banco = "c:\teste\teste.accdb"
        
        'Verifica se algum banco de dados foi selecionado
        If Not IsEmpty(Banco) Then
            'Percorre todas as tabelas da base
            For Cont = 0 To CurrentDb.TableDefs.Count - 1
                'A propriedade connect só possui valor quando é uma tabela vinculada
                'Verifica se a tabela atual possui valor nessa propriedade
                If Not CurrentDb.TableDefs(Cont).Connect = "" Then
                    'Verifica se a atualização ocorreu
                    Atualizado = AtualizaTabelaVinculada(CurrentDb.TableDefs(Cont).Name, Banco)
                End If
            Next
        End If
        
        'Verifica se ocorreu a atualização
        If Atualizado Then
            MsgBox "Tabelas atualizadas!", vbInformation, "Atualização concluída..."
            DoCmd.OpenForm "frmPrincipal", , , , , acDialog
            Else
            MsgBox "Seu aplicativo não foi atualizado está atualização será encerrada", vbCritical, "Aviso"
            DoCmd.Quit
        End If
    End Sub

    'Abre um dialog para buscar o caminho de um arquivo
    Public Function BuscaArquivo() As String
        On Error GoTo ErrHandler
        
        'Declara o dialog
        Dim CaixaDialogo As Office.FileDialog
        
        'Define como um dialog que busca arquivos
        Set CaixaDialogo = Application.FileDialog(msoFileDialogFilePicker)
        
        With CaixaDialogo
            
            'Não permite múltipla seleção
            .AllowMultiSelect = False
            'Define o título do dialog
            .Title = "Selecione o aplicativo para atualização..."
            'Define o texto do botão
            .ButtonName = "Selecionar"
            
            'Limpa e adiciona novos filtros
            .Filters.Clear
            .Filters.Add "Access Databases", "*.MDB,ACCDB"
            
            'Caso o Show seja verdadeiro, significa que o usuário selecionou ao menos 1 arquivo
            If .Show = True Then
                BuscaArquivo = .SelectedItems(1)
            End If
            
        End With
        
    ErrHandler:
        
        If Err.Number <> 0 Then
            'Caso ocorra algum erro, exibe a mensagem com o número e a descrição
            MsgBox "Erro: " & Err.Description & vbCrLf, vbCritical, "Número do erro: " & Err.Number
            'Indica que não atualizou
            BuscaArquivo = ""
        End If
        
    End Function

    'Procedure to relink tables from the Common Access Database
    Public Function AtualizaTabelaVinculada(ByVal NomeTabela As String, ByVal CaminhoBackend As String) As Boolean

        On Error GoTo ErrHandler

        Dim Banco As DAO.Database
        Dim Tabela As DAO.TableDef
        
        'Define o banco de dados atual
        Set Banco = CurrentDb()
        
        'Define a tabela a ser atualizada
        Set Tabela = Banco.TableDefs(NomeTabela)
        
        'Executa a atualização com a senha caso a variável SenhaBD não esteja vazia
        If Not SenhaBD = "" Then
            'Define a nova conexão
            Tabela.Connect = ";DATABASE=" & CaminhoBackend & ";pwd=" & SenhaBD
        Else
            'Define a nova conexão
            Tabela.Connect = ";DATABASE=" & CaminhoBackend
        End If
        
        'Atualiza o link
        Tabela.RefreshLink

    ErrHandler:

        'Este erro indica que o banco de dados escolhido precisa de uma senha
        If Err.Number = 3031 Then
            'Solicita a senha do banco de dados
            SenhaBD = InputBox("Informe a senha do banco de dados:", "Senha...")
            
            'Caso não informe nenhuma senha, finaliza a atualização
            If SenhaBD = "" Then
                AtualizaTabelaVinculada = False
                Exit Function
            End If
            
            'Executa novamente a atualização, agora com a senha do BD
            AtualizaTabelaVinculada NomeTabela, CaminhoBackend
        ElseIf Err.Number <> 0 Then
            'Caso ocorra algum erro, exibe a mensagem com o número e a descrição
            MsgBox "Erro: " & Err.Description & vbCrLf, vbCritical, "Número do erro: " & Err.Number
            'Indica que não atualizou
            AtualizaTabelaVinculada = False
        Else
            'Indica que atualizou
            AtualizaTabelaVinculada = True
        End If

    End Function
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Definindo a senha em vez de pedir por Inputbox Empty Re: [Resolvido]Definindo a senha em vez de pedir por Inputbox

    Mensagem  Alvaro Teixeira 17/7/2016, 18:42

    Olá, estou no celeular e não dá muito jeito para exemplificar.
    O ideal, seria ajustar a função ActualizaTabelaVinculada a permitir também receber a senha que seria, passada na chamada função.
    Assim é o correcto na minha opinião.

    Para resolver rapidamente, onde tem:
    'Executa a atualização com a senha caso a variável SenhaBD não esteja vazia
    If Not SenhaBD = "" Then

    Altere para:
    'Executa a atualização com a senha caso a variável SenhaBD não esteja vazia
    SenhaBD = "coloqueAquiAsenha"
    If Not SenhaBD = "" Then

    Abraço
    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 103
    Registrado : 08/12/2013

    [Resolvido]Definindo a senha em vez de pedir por Inputbox Empty Resolvido

    Mensagem  webruxim 22/7/2016, 22:19

    Desculpa a demora pelo retorno... estava viajando a trabalho

    ahteixeira Obrigado meu brother... deu certo aqui
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Definindo a senha em vez de pedir por Inputbox Empty Re: [Resolvido]Definindo a senha em vez de pedir por Inputbox

    Mensagem  Alvaro Teixeira 23/7/2016, 11:13

    Olá, obrigado pelo retorno.
    Abraço

    Conteúdo patrocinado


    [Resolvido]Definindo a senha em vez de pedir por Inputbox Empty Re: [Resolvido]Definindo a senha em vez de pedir por Inputbox

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 23:05