MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Conexão ao banco mysql via código vba - verificar se esta ativo.

    avatar
    gtpsp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 01/11/2013

    Conexão ao banco mysql via código vba - verificar se esta ativo. Empty Conexão ao banco mysql via código vba - verificar se esta ativo.

    Mensagem  gtpsp em 27/6/2020, 14:23

    Bom dia a todos, venho recorrer a vocês pois já estou quebrando a cabeça tem um tempo e não consigo resolver.

    Tenho um código vba para conexão ao banco mysql que consegui aqui no forum, fiz uma adaptação incluindo a porta do mysql o que permite tambem a conexão externa ao banco de dados, seja em nuvem ou fisico e que funciona 100%. para executar o código utilizo uma macro autoexec, não sei se colocando uma condição se, para verificar a variável que não identifico resolveria.

    Os problemas que tenho e não estou conseguindo resolver é.

    1-Verificar se a conexão com o banco esta ok, estando faz o processo normal, não estando informar que o banco não foi encontrado, pois se o banco não esta ativo o sistema mostra a tela da conexão odbc para cada tabela o que demora muito para o fechamento do sistema. Sei que isso posso fazer com o if porem não consigo identificar a variavel ou instrução para essa verificação)

    2-O código não apaga tabelas que já não estão mencionadas no código.

    abaixo segue o código que utilizo já com a adaptação da porta.

    Código:

    On Error GoTo AttachDSNLessTable_Err
    Dim td As TableDef
    Dim stConnect As String

    ' deletar as tabelas se ja existirem

    For Each td In CurrentDb.TableDefs
        If td.Name = stLocalTableName Then
            CurrentDb.TableDefs.Delete stLocalTableName
        End If
    Next

    If Len(stUserName) = 0 Then
    '/ / Use autenticação confiável se stUsername não é fornecido.
    ' stConnect = "ODBC; DRIVER ={SQL SERVER};SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
    stConnect = "ODBC; DRIVER ={MySQL ODBC 5.3 ANSI Driver};SERVER=" & stServer & ";DATABASE=" & stDatabase & ";PORT=" & strPort & ";Trusted_Connection=Yes"
    Else
    '/ / AVISO: Isto irá poupar o nome de usuário e a senha com as informações da tabela vinculada.
    stConnect = "ODBC;DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUserName & ";PWD=" & stPassword & ";PORT=" & strPort & ";Option=3;"
    End If

    Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
    CurrentDb.TableDefs.Append td
    AttachDSNLessTable = True
    Exit Function

    AttachDSNLessTable_Err:

    AttachDSNLessTable = False
    MsgBox "AttachDSNLessTable encontrou um erro inesperado: " & Err.Description

    End Function


    Function CreateConnection()

    Dim strPasswd As String
    Dim strServer As String
    Dim strUser As String
    Dim strDB As String
    Dim strPort As String

    strPasswd = "jo092926" ' Senha do servidor
    strUser = "root" ' Usuario do servidor
    strServer = "127.0.0.1" 'IP do servidor
    strDB = "altasystem" 'Banco de Dado
    strPort = "3306" 'Porta do servidor
    Rem error


    On Error Resume Next 'Tratamento de erro


    'Essa tabela devem ser ligados

    'AttachDSNLessTable("NOME DESTINO", "NOME ORIGEM", strServer, strDB, strUser, strPasswd,strPort)

    Set dummy = AttachDSNLessTable("sy01empresa", "sy01empresa", strServer, strDB, strUser, strPasswd, strPort)

    End Function


    Desde já agradeço a todos.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    Conexão ao banco mysql via código vba - verificar se esta ativo. Empty Re: Conexão ao banco mysql via código vba - verificar se esta ativo.

    Mensagem  DamascenoJr. em 30/6/2020, 00:39



    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    gtpsp gosta desta mensagem

    avatar
    gtpsp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 01/11/2013

    Conexão ao banco mysql via código vba - verificar se esta ativo. Empty Re: Conexão ao banco mysql via código vba - verificar se esta ativo.

    Mensagem  gtpsp em 1/7/2020, 15:57

    Obrigado DamascenoJr., vou olhar os exemplos e "tentar" entender, assim que conseguir a solução aviso e coloco o código como ficou..

    Muito obrigado por enquanto e qualquer coisa volto a incomodar.

    marcelo3092
    marcelo3092
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 236
    Registrado : 19/08/2010

    Conexão ao banco mysql via código vba - verificar se esta ativo. Empty Re: Conexão ao banco mysql via código vba - verificar se esta ativo.

    Mensagem  marcelo3092 em 1/7/2020, 17:33

    Ola Amigo eu uso um codigo muito bom do Alexandre Fim que faz a conexão mais e online o banco mysql porem ele funciona local basta alterar os parametros no meu caso eu uso uma tabela para colocar os parametro de conexao, e carrego as variaveis com as informações. Agora o caso de ele não achar o db poderia criar um tratamento de erro a partir do código que ele te mostra.


    '---------------------------------------------------------------------------------------
    ' PROCEDIMENTO: MySQL_Server
    ' DESCRIÇÃO: Carrega os dados para conexão ao servidor MySQL com base na tabela
    ' parametros
    '---------------------------------------------------------------------------------------

    Public Function MySQL_Server()

    MyslqServidor = DLookup("[Servidor]", "_parametros") 'Servidor Web
    MyslqUsuario = DLookup("[Usuario]", "_parametros") 'Usuário do banco de dados
    MyslqSenha = DLookup("[Senha]", "_parametros") 'Senha do banco de dados
    MyslqDatabase = DLookup("[Banco_Dados]", "_parametros") 'Database
    MyslqDriver = DLookup("[Driver]", "_parametros")

    End Function



    Public Function Conecta()

    On Error GoTo trata_erro
    Dim blnConn As Boolean
    Dim myDriver As String


    'se a conexão estiver aberta e o nome do DB for igual ao nome do DB do parâmetro
    'Então está conectado
    If cn.State = 1 And cn.DefaultDatabase = MyslqDatabase Then
    Conecta = True
    Exit Function
    End If

    'Se a conexão estiver fechada então vá para seção de abertura
    If cn.State = 0 Then
    blnConn = True
    GoTo CONECTA_DB
    End If

    If cn.State = 0 And (IsNull(cn.DefaultDatabase) Or Trim(cn.DefaultDatabase) = Empty) Then
    blnConn = True
    ElseIf cn.State = 1 And (IsNull(cn.DefaultDatabase) Or Trim(cn.DefaultDatabase) = Empty) Then
    Call Desconecta
    blnConn = True
    Else
    blnConn = False
    End If

    CONECTA_DB:

    Call MySQL_Server 'Carrega parametros do servidor

    myDriver = "driver={" & MyslqDriver & "}"

    If blnConn = True Then
    With cn
    .CursorLocation = adUseClient
    .ConnectionTimeout = 0
    .CommandTimeout = 0
    .ConnectionString = "" & myDriver & ";" & _
    "SERVER=" & MyslqServidor & ";" & _
    "DATABASE=" & MyslqDatabase & ";" & _
    "USER=" & MyslqUsuario & ";" & _
    "PASSWORD=" & MyslqSenha & ";" & _
    "OPTION=3;"
    .Open
    End With
    End If

    Exit Function

    trata_erro:

    blnConn = True

    GoTo CONECTA_DB

    MsgBox "Erro gerado: " & Err.Number & " - " & Err.Description & "" & _
    vbCrLf & " O sistema será encerrado.", vbCritical + vbOKOnly + vbApplicationModal, "Erro de Conexão"
    Set cn = Nothing

    Exit Function

    End Function

    'Alexandre Fim
    Public Function Desconecta()

    If cn.State = 1 Then
    cn.Close
    Set cn = Nothing
    End If

    End Function

    Public Function FN_FechaRst(nNomeRst As ADODB.Recordset)
    On Error Resume Next

    If nNomeRst.State = 1 Then
    nNomeRst.Close
    Set nNomeRst = Nothing
    End If

    End Function


    Espero ter ajudado.

    gtpsp gosta desta mensagem

    avatar
    gtpsp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 01/11/2013

    Conexão ao banco mysql via código vba - verificar se esta ativo. Empty Re: Conexão ao banco mysql via código vba - verificar se esta ativo.

    Mensagem  gtpsp em 14/7/2020, 15:08

    Desculpe a demora para responder estou afastado por uns dias.. assim que retornar as atividades verifico e digo como ficou..

    obrigado mais uma vez Damasceno e Marcelo.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    Conexão ao banco mysql via código vba - verificar se esta ativo. Empty Re: Conexão ao banco mysql via código vba - verificar se esta ativo.

    Mensagem  DamascenoJr. em 23/9/2020, 23:36

    gtpsp, algum avanço?

    Aguardamos...


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    gtpsp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 01/11/2013

    Conexão ao banco mysql via código vba - verificar se esta ativo. Empty Re: Conexão ao banco mysql via código vba - verificar se esta ativo.

    Mensagem  gtpsp em 16/11/2020, 19:01

    DamasceloJr.

    Desculpe a demora para responder!

    Não consegui fazer a verificação tentei usar o método conectar e verificar antes do código que uso e não obtive sucesso.

    gera erro de compilação quando chamo o call conectar() para verificar o status..

    Não sei se é porque estou misturando ADO (sugerido) com ODBC (utilizando)..

    Alguma luz por favor de um caminho?

    Obrigado!

      Data/hora atual: 2/12/2020, 13:04