CONEXAO COM BANCO DE DADOS MYSQL
Amigos estou com dificuldades em uma coisa muito simples. Provavelmente esteja faltando alguma referencia ou algo do tipo. Bom, eu tenho o seguinte código. Quando eu executo ele me da o seguinte problema [Ô]Object Variable or with a block variable not set[Ô]. Na linha em negrito
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Sub Conectar()
con.ConnectionString = [Ô]Driver={MySQL ODBC 5.2w Driver};Server=localhost;Database=testedb;User=root;Password=1234;Option=3;[Ô]
con.Open
End Sub
Private Sub Form_Load()
[ô]Dim clsConectar As clsConectar
[ô]clsConectar.Conectar
Conectar
End Sub
Desde já muito grato.
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Sub Conectar()
con.ConnectionString = [Ô]Driver={MySQL ODBC 5.2w Driver};Server=localhost;Database=testedb;User=root;Password=1234;Option=3;[Ô]
con.Open
End Sub
Private Sub Form_Load()
[ô]Dim clsConectar As clsConectar
[ô]clsConectar.Conectar
Conectar
End Sub
Desde já muito grato.
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
[txt-color=#e80000]Set con = New ADODB.Connection
Se rs = New ADODB.Recordset[/txt-color]
...resto do código
Agora deu certo!!
KERPLUNK porque antes não deu? Porque eu tenho que declarar ele como ADODB e depois setar?
KERPLUNK porque antes não deu? Porque eu tenho que declarar ele como ADODB e depois setar?
Desculpe me atravessar, mas é assim Set é definir, ou seja você é obrigado a definir o ADODB como um novo OBJETO, ou seja você declara o objeto e o define como novo, porém você poderia também declarar o objeto como novo diretamente, ex:
e da maneira acima você não precisaria defini-lo ou seta-lo
Dim CON As New ADODB.Connection
e da maneira acima você não precisaria defini-lo ou seta-lo
Ok, deu tudo certo, só mais uma dúvida.
E se eu fosse chamar ele de uma classe? Ou seja, estou colocando minha rotina de conexão com o banco de dados dentro de uma classe, e quero chama-lo no load do projeto.
E se eu fosse chamar ele de uma classe? Ou seja, estou colocando minha rotina de conexão com o banco de dados dentro de uma classe, e quero chama-lo no load do projeto.
eu particularmente chamo ele de um módulo você poderia muito bem chama-lo de uma classe da mesma maniera veja:
Repare que declarei o ADODB como global, e criei uma função publica, que é fácil de utilizar, veja
no load do form abro a conexão assim
e No unload fecho
e pronto
na função acima ainda criei uma sistema de segurança que fecha o banco automaticamente caso eu o esqueça aberto e tente abri-lo novamente.
If Conexao.State = 1 Then
Conexao.Close
Set Conexao = Nothing
Valor = True
End If
Global Conexao As New ADODB.Connection
Public Function Conecta(Valor As Boolean)
Dim SERVER As String, BD As String, PORTA As String, USER As String, SENHA As String
Dim CON_STR As String
If Conexao.State = 1 Then
Conexao.Close
Set Conexao = Nothing
Valor = True
End If
If Valor = True Then
SERVER = [Ô]localhost[Ô]
BD = [Ô]nomedobanco[Ô]
PORTA = [Ô]3306[Ô]
USER = [Ô]root[Ô]
SENHA = [Ô]suasenha[Ô]
CON_STR = [Ô]DRIVER={MySQL ODBC 5.1 DRIVER};[Ô] _
& [Ô]Server=[Ô] & SERVER & [Ô];[Ô] _
& [Ô]Port=[Ô] & PORTA & [Ô];[Ô] _
& [Ô]Database=[Ô] & BD & [Ô];[Ô] _
& [Ô]UID=[Ô] & USER & [Ô];[Ô] _
& [Ô]PWD=[Ô] & SENHA & [Ô];[Ô] _
& [Ô]Option=3;[Ô]
With Conexao
.CursorLocation = adUseClient
.ConnectionString = CON_STR
.Open CON_STR
End With
Else
Conexao.Close
Set Conexao = Nothing
End If
End Function
Repare que declarei o ADODB como global, e criei uma função publica, que é fácil de utilizar, veja
no load do form abro a conexão assim
Conecta True
e No unload fecho
Conecta False
e pronto
na função acima ainda criei uma sistema de segurança que fecha o banco automaticamente caso eu o esqueça aberto e tente abri-lo novamente.
If Conexao.State = 1 Then
Conexao.Close
Set Conexao = Nothing
Valor = True
End If
Obrigado novamente MARCELO-TREZE.
Consegui finalizar por aqui. Só mais uma coisa, como você põe a codificação dentro desta caixa azul ?
Muito obrigado, depois da resposta eu finalizo o tópico e pontuo.
Consegui finalizar por aqui. Só mais uma coisa, como você põe a codificação dentro desta caixa azul ?
Muito obrigado, depois da resposta eu finalizo o tópico e pontuo.
quando for código você o seleciona e clica na letra C acima das carinhas no canto esquerdo da caixa de digitação
Tópico encerrado , respostas não são mais permitidas