Conectar com banco Mysql


#1

Bom dia, Estou tentando conectar o excel com o banco mysql. eu consigo conectar mas não desconectar… segue o codigo de conexão e desconexão.
conecta
`Sub abrir_banco_de_dados()
Dim Cn As ADODB.Connection
Dim Server_Name As String
Dim Database_Name As String
Dim User_ID As String
Dim Password As String
Dim SQLStr As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

Server_Name = “localhost”
Database_Name = “ourlady”
User_ID = “root”
Password = “”
SQLStr = “select * FROM fiel_intecoes”

Set Cn = New ADODB.Connection
Cn.Open “Driver={MySQL ODBC 8.0 Ansi Driver};Server=” & Server_Name & “;Database=” & Database_Name & _
“;Uid=” & User_ID & “;Pwd=” & Password & “;”
MsgBox (“banco connectado”)
End Sub`
era pra desconectar

'Sub fechar_banco_de_dados()

rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
End Sub’


#2

Acontece algum tipo de erro ao desconectar?

Ou apresenta apenas quando tenta fazer uma nova conexão, poderia deixar algum print?

Não sei se engano meu, mas você estar fechando um RecordSet sem mesmo ter abrido ele. Você até instancio o objeto, mas não abriu nenhuma tabela…


#3

Boa tarde,! Deslcupa a demora!
Eu encontrei esse codigo na internet.
Eu havia percebido isso, mas mesmo sem RecordSet ele não desconecta. Quando ele conecta ele traz a mensagem de conectado.
Quando tento desconectar ele da o erro conforme vc pode ver nas imagens abaixo.

Obrigado pelo retorno e atenção!
ERRO


#4

Então amigo, o ideal seria você declarar as variáveis Cn e rs no escopo do código.

Pois pelo que parece, elas estão dentro de procedimentos. Mas não tenho certeza, mas se for isso. Esse erro acontece porque o vba no final de cada método realiza o nothing do obj automático. Ou seja o Cn e o rs só vai ser acessível dentro da Sub abrir_banco_de_dados()

Segue um exemplo:

Option Explicit

Public Cn As New ADODB.Connection
Public rs As New ADODB.Recordset

Public Sub AbrirConexao()
    Cn.Open "Driver={MySQL ODBC 3.51 Driver};" & _
    "Server=SeuServidor" & _
    ";Database=NomeDoBanco;" & _
    "User=Usuario;" & _
    "Password=Senha;"
End Sub


Public Sub FecharConexao()
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
End Sub

Você pode chamar esses métodos para abrir e fechar a conexão, testa ai!