CONEXÃO COM BANCO DE DADOS SQL
Bom dia Pessoal,
Tenho a seguinte instrução para conexão ao banco de dados SQLServer que é executada toda vez que tenho realizar uma operação no banco:
Dim CNConfBD As New ADODB.Connection
CNConfBD.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CNConfBD.Properties([Ô]Data Source[Ô]).Value = [Ô]DESENVOLVIMENTO\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CNConfBD.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CNConfBD.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CNConfBD.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CNConfBD.Open [ô] Abrindo a conexão
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
rsConfBD.Open [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô], CNConfBD, adOpenStatic
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
CNConfBD.Close
Como uso muito esse tipo de rotina do sistema, abrindo e fechando uma conexão no banco, gostaria de tornar a programação mais prática, não tendo que digitar a mesma coisa o tempo todo. Do modo que estou programando o tenho que digitar a mesma coisa várias vezes.
Gostaria da ajuda de vocês para automatizar essa rotina, para que, ao programar as rotinas, eu não tenha que setar apenas a condição.
Tenho a seguinte instrução para conexão ao banco de dados SQLServer que é executada toda vez que tenho realizar uma operação no banco:
Dim CNConfBD As New ADODB.Connection
CNConfBD.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CNConfBD.Properties([Ô]Data Source[Ô]).Value = [Ô]DESENVOLVIMENTO\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CNConfBD.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CNConfBD.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CNConfBD.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CNConfBD.Open [ô] Abrindo a conexão
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
rsConfBD.Open [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô], CNConfBD, adOpenStatic
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
CNConfBD.Close
Como uso muito esse tipo de rotina do sistema, abrindo e fechando uma conexão no banco, gostaria de tornar a programação mais prática, não tendo que digitar a mesma coisa o tempo todo. Do modo que estou programando o tenho que digitar a mesma coisa várias vezes.
Gostaria da ajuda de vocês para automatizar essa rotina, para que, ao programar as rotinas, eu não tenha que setar apenas a condição.
Você pode criar uma classe chamada Conexão e colocar o método Abrir e Fechar.
No Abrir você deixa o código:
Deixa essa variável como pública:
e no método fechar:
Quando quiser executar alguma coisa, basta fazer:
Dim SuaClasse As New TipoSuaClasse
SuaClasse.Open()
SuaClasse.CnConfBD.Execute [Ô]Insert Into bla bla bla[Ô]
SuaClasse.Close()
Isso tem como ser melhorado, e muito... mas aà já entra conceitos de metodologia objeto-relacional ... orientação a objetos (q o vb6 não tem), etc...
Abraços
No Abrir você deixa o código:
Set CNConfBD = new Adodb,Connection
CNConfBD.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CNConfBD.Properties([Ô]Data Source[Ô]).Value = [Ô]DESENVOLVIMENTO\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CNConfBD.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CNConfBD.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CNConfBD.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CNConfBD.Open [ô] Abrindo a conexão
Deixa essa variável como pública:
Public CNConfBD As ADODB.Connection
e no método fechar:
CNConfBD.Close
Quando quiser executar alguma coisa, basta fazer:
Dim SuaClasse As New TipoSuaClasse
SuaClasse.Open()
SuaClasse.CnConfBD.Execute [Ô]Insert Into bla bla bla[Ô]
SuaClasse.Close()
Isso tem como ser melhorado, e muito... mas aà já entra conceitos de metodologia objeto-relacional ... orientação a objetos (q o vb6 não tem), etc...
Abraços
Boa noite DS2T,
Obrigado pelo retorno.
Tentei realizar o que você indicou mais tenho algumas dúvidas. Fiz como abaixo:
1 - Primeiro Criei a classe ConexaoBanco:
Public CNConexaoBanco As ADODB.Connection
Private Sub ConectarBanco()
Set CNConexaoBanco = New ADODB.Connection
CNConexaoBanco.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CNConexaoBanco.Properties([Ô]Data Source[Ô]).Value = [Ô]DESENVOLVIMENTO\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CNConexaoBanco.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CNConexaoBanco.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CNConexaoBanco.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CNConexaoBanco.Open [ô] Abrindo a conexão
End Sub
Private Sub DesconectarBanco()
CNConexaoBanco.Close
End Sub
2 - Em segundo tentei usar a classe no objeto:
Private Sub cmdsalvarconfbanco_Click()
Dim ConexaoBanco As New Connection
[txt-color=#e80000]ConexaoBanco.Open[/txt-color]
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
[txt-color=#e80000]ConexaoBanco.Execute[/txt-color] [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô] [ô], ConexaoBD, adOpenStatic
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
[txt-color=#e80000]ConexaoBanco.Close[/txt-color]
End Sub
Ao executar o projeto, a seguinte informação foi apresentada:
Run-time Error [ô]-2147467259 (80004005)[ô]:
[Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado.
Observações:
- Ao digitar a linha do execute [Ô]ConexaoBanco.Execute[Ô] não apareceu a opção CNConexãoBanco, que foi a variável que criei, ou seja, o certo, segundo sua explicação seria ficar ConexaoBanco.CNConexaoBanco.Execute. Seria isso mesmo ou fiz alguma coisa errado?
- Na parte, Dim ConexaoBanco As New ADODB.Connection, eu coloquei o tipo da classe como ADODB.Connection. Está correto?
- A terceira dúvida seria na parte do Execute intercalado com a condição IF. Eu coloquei da seguinte maneira:
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
[txt-color=#e80000]ConexaoBanco.Execute[/txt-color] [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô] [ô], ConexaoBD, adOpenStatic
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
Gostaria de saber se está correto.
Abraço
Rogério Couto
Obrigado pelo retorno.
Tentei realizar o que você indicou mais tenho algumas dúvidas. Fiz como abaixo:
1 - Primeiro Criei a classe ConexaoBanco:
Public CNConexaoBanco As ADODB.Connection
Private Sub ConectarBanco()
Set CNConexaoBanco = New ADODB.Connection
CNConexaoBanco.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CNConexaoBanco.Properties([Ô]Data Source[Ô]).Value = [Ô]DESENVOLVIMENTO\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CNConexaoBanco.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CNConexaoBanco.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CNConexaoBanco.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CNConexaoBanco.Open [ô] Abrindo a conexão
End Sub
Private Sub DesconectarBanco()
CNConexaoBanco.Close
End Sub
2 - Em segundo tentei usar a classe no objeto:
Private Sub cmdsalvarconfbanco_Click()
Dim ConexaoBanco As New Connection
[txt-color=#e80000]ConexaoBanco.Open[/txt-color]
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
[txt-color=#e80000]ConexaoBanco.Execute[/txt-color] [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô] [ô], ConexaoBD, adOpenStatic
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
[txt-color=#e80000]ConexaoBanco.Close[/txt-color]
End Sub
Ao executar o projeto, a seguinte informação foi apresentada:
Run-time Error [ô]-2147467259 (80004005)[ô]:
[Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado.
Observações:
- Ao digitar a linha do execute [Ô]ConexaoBanco.Execute[Ô] não apareceu a opção CNConexãoBanco, que foi a variável que criei, ou seja, o certo, segundo sua explicação seria ficar ConexaoBanco.CNConexaoBanco.Execute. Seria isso mesmo ou fiz alguma coisa errado?
- Na parte, Dim ConexaoBanco As New ADODB.Connection, eu coloquei o tipo da classe como ADODB.Connection. Está correto?
- A terceira dúvida seria na parte do Execute intercalado com a condição IF. Eu coloquei da seguinte maneira:
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
[txt-color=#e80000]ConexaoBanco.Execute[/txt-color] [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô] [ô], ConexaoBD, adOpenStatic
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
Gostaria de saber se está correto.
Abraço
Rogério Couto
Pessoal,
Peço desculpas, a solução do DS2T funcionou perfeitamente. Eu que estava fazendo errado.
O jeito correto ficou:
Private Sub cmdsalvarconfbanco_Click()
Dim ConexaoBanco As New ConexaoBanco
ConexaoBanco.ConectarBanco
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
ConexaoBanco.CNConexaoBanco.Execute [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô]
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
ConexaoBanco.DesconectarBanco
End Sub
1 - Eu estava declarando Dim ConexaoBanco As ADODB.Connection e o certo é Dim ConexaoBanco As New ConexaoBanco
2 - Também declarei os métodos na classe como públicos, antes eu estava declarando como privados.
DS2T, muito obrigado pela ajuda, a um bom tempo eu buscava uma maneira de resolver este problema.
Abraço
Rogério Couto
Peço desculpas, a solução do DS2T funcionou perfeitamente. Eu que estava fazendo errado.
O jeito correto ficou:
Private Sub cmdsalvarconfbanco_Click()
Dim ConexaoBanco As New ConexaoBanco
ConexaoBanco.ConectarBanco
If txtprovedor.Text <> [Ô][Ô] And txtcaminhobanco.Text <> [Ô][Ô] And txtnomebanco.Text <> [Ô][Ô] And txtusuariobanco.Text <> [Ô][Ô] And txtsenhabanco.Text <> [Ô][Ô] Then
ConexaoBanco.CNConexaoBanco.Execute [Ô]INSERT INTO TABCONFBANCO(PROVEDORBD,CAMINHOBD,NOMEBD,USUARIOBD,SENHABD) values ([ô][Ô] & txtprovedor.Text & [Ô][ô],[ô][Ô] & txtcaminhobanco.Text & [Ô][ô],[ô][Ô] & txtnomebanco.Text & [Ô][ô],[ô][Ô] & txtusuariobanco.Text & [Ô][ô],[ô][Ô] & txtsenhabanco.Text & [Ô][ô])[Ô]
Else
MsgBox [Ô]Todos os campos devem ser preenchidos![Ô], vbInformation
End If
ConexaoBanco.DesconectarBanco
End Sub
1 - Eu estava declarando Dim ConexaoBanco As ADODB.Connection e o certo é Dim ConexaoBanco As New ConexaoBanco
2 - Também declarei os métodos na classe como públicos, antes eu estava declarando como privados.
DS2T, muito obrigado pela ajuda, a um bom tempo eu buscava uma maneira de resolver este problema.
Abraço
Rogério Couto
Tópico encerrado , respostas não são mais permitidas