MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Conexão com Banco de Dados Access Externo

    Compartilhe

    jsouzasites
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 30/08/2013

    Conexão com Banco de Dados Access Externo

    Mensagem  jsouzasites em 9/3/2018, 12:50

    Estou criando uma aplicação no access em que vou precisar que a conexão com o banco, também em access, seja feita por vba. Isso porque quero separar o banco dos formulários e o caminho vai variar e vai funcionar em rede, ou seja, preciso que funcione usando ThisWorkbook.Path para encontrar o Banco.

    Queria saber como faço para criar essa conexão por VBA, que ao abrir a aplicação, toda ela funcione, usando esse banco externo, da mesma forma que funciona quando separemos o banco usando a ferramenta do access.

    Obrigado.
    avatar
    José Machado
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 94
    Registrado : 13/09/2016

    Re: Conexão com Banco de Dados Access Externo

    Mensagem  José Machado em 12/3/2018, 14:04

    Bom dia Amigo

    Crie um Modulo de Classe com nome Cls_Conexao e cole o código abaixo nele, Importa a biblioteca Microsoft Activex Data Objects 2.8 Library

    Dim CONEXAO As ADODB.Connection

    Dim CONEXAO_STRING As String

    Public DATA_READER As ADODB.Recordset

        
    Sub Initialize()
        
        Dim DATA_BASE_PROVIDER As String
        Dim DATA_BASE_LOCAL As String
        Dim DATA_BASE_NOME As String
        Dim DATA_BASE_USUARIO As String
        Dim DATA_BASE_SENHA As String
        
        DATA_BASE_PROVIDER = "Microsoft.ACE.OLEDB.12.0"
        
        DATA_BASE_LOCAL = " C:\" 
        
        DATA_BASE_NOME = " Nome do Arquivo mais a extensão .accdb" 
          
        DATA_BASE_USUARIO = ""
        
        DATA_BASE_SENHA = ""
        
        CONEXAO_STRING = "Provider = " & DATA_BASE_PROVIDER & _
        ";DATA SOURCE = " & DATA_BASE_LOCAL + DATA_BASE_NOME & _
        ";USER ID = " & DATA_BASE_USUARIO & _
        ";PASSWORD = " & DATA_BASE_SENHA & ";"
        
        Set CONEXAO = New ADODB.CONEXAO
        
        CONEXAO.CursorLocation = adUseClient
        
    End Sub

    Public Sub Abrir_Conexao()
        Initialize
        CONEXAO.Open CONEXAO_STRING
    End Sub

    Public Sub Fechar_Conexao()
        CONEXAO.Close
        Set CONEXAO = Nothing
    End Sub

    Public Sub Executar_Query(query As String)
        Abrir_Conexao
        CONEXAO.Execute (query)
        Fechar_Conexao
    End Sub

    Public Sub Executar_DATA_READER(query As String)
        Set DATA_READER = New ADODB.Recordset
            DATA_READER.Open query, CONEXAO, adOpenStatic, adLockReadOnly
    End Sub
    Public Sub Fechar_DATA_READER()
        DATA_READER.Close
        Set DATA_READER = Nothing
        Fechar_Conexao
    End Sub

    jsouzasites
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 30/08/2013

    Re: Conexão com Banco de Dados Access Externo

    Mensagem  jsouzasites em 14/3/2018, 12:13

    Vlw. Só fiquei confuso de como usar. Estou tentando aqui mas...

    Vou precisar alterar todo o código do projeto para executar as query? É possível fazer a conexão ao abrir a aplicação e continuar com os códigos atuais por exemplo:

    Me.cbTurma.RowSource
    ou
    CurrentDb.Execute

    Obrigado.
    avatar
    José Machado
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 94
    Registrado : 13/09/2016

    Re: Conexão com Banco de Dados Access Externo

    Mensagem  José Machado em 14/3/2018, 18:17

    Boa tarde Amigo...

    Ex: Para preencher caixa de listagem, crie o método separado dos eventos:
    * No topo de cada Arquivo VBA que for usar a Classe de Conexão, Declare essa Linha: Dim CONEXAO As New Cls_Conexao

    Sub Preencher_lista()
    Dim query As String

    query = "SELECT * FROM sua tabela"
        
        CONEXAO.Abrir_Conexao
        CONEXAO.Executar_DATA_READER (query)

        Set sua_lista.Recordset = Nothing
        Set sua_lista.Recordset = CONEXAO.DATA_READER
        
        CONEXAO.Fechar_DATA_READER

    End Sub

    *Para Executar INSERT INTO, UPDATE, DELETE, Crie o método separado do evento:
    * No topo de cada Arquivo VBA que for usar a Classe de Conexão, Declare essa Linha: Dim CONEXAO As New Cls_Conexao
    Ex:

    Sub Salvar_Cliente()
        Dim query As String

        query = "INSERT INTO sua tabela()VALUES()"
        
        CONEXAO.Executar_Query (query)

    End Sub

      Data/hora atual: 24/9/2018, 20:57