STRING DE CONEXAO NAO REPETIVEL

GUILER99 14/11/2011 11:51:50
#389118
Bom dia Senhores
Trabalho com Visual Basic 6 e estou Desenvolvendo um Sistema para a Faculdade na mesma linguagem,uso banco de dados MySql e toda vez que abro um crio um formulário novo tenho que ficar colocando a string de conexão.
Gostaria de saber se tem como eu nao ficar repitindo a string e toda vez que criar um form eu só coloco cn.open para abrir a conexao
Grato
ALVAROVB2009 14/11/2011 11:58:03
#389120
GUILER99 bom dia, se vc estiver usando ADO, faça assim
Nesse exemplo, estou usando um banco Mysql, por isso o drive ODBC

Cria um módulo chamado AbreBanco(ou o nome q vc quiser)
Nesse módulo coloque
Public Db As ADODB.Connection
Public Sub AbreBanco()
Set Db = New ADODB.Connection
Db.Open [Ô]Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=seubanco;User=root; Password=seusenha;Option=3; (fonte site Connection Strings).[Ô]
end Sub

E no load de cada form, vc coloca
Abrebanco

Acho que isso pode te ajudar, qqer coisa posta ai
GUILER99 14/11/2011 12:05:10
#389121
Então eu Faço desse jeito,é pratico porem gostaria se tivesse uma forma de que nao colocasse em todos os forms criasse um metodo ou uma classe que todos os forms pegariame nao ficasse repetindo toda vez que criasse

Grato
CHARLESTON10 14/11/2011 12:52:21
#389127
Eu uso do mesmo modo do nosso colega ALVAROVB2009
porém eu abro uma vez só o banco de dados, no form Splash do programa ou no formulário principal no evento Load
e fecho quando o usuário encerrar o programa, assim não tenho que ficar usando a string de conexão todo momento.

Abro o banco quando estou usando o programa e fecho quando encerro o programa.

As tabelas não posso fazer o mesmo, pois é usada a todo momento, caso eu abrisse uma vez só aconteceria que em outro formulário eu usasse a mesma tabela
ia acontecer algum erro pois ela estaria sendo usada por outro form.

Não vem ao caso, respondendo a sua dúvida, abra uma vez só o banco no form principal e feche quando encerrar a aplicação;
Eu uso assim e não tenho problemas, mesmo sendo em rede.

ALVAROVB2009 14/11/2011 13:33:16
#389133
GUILER99 eu falei para colocar no load de cada form, porque eu na realidade não sei como q vc trabalha, e para mim eu entendi na sua pergunta que vc cria a conexão em todo o formulário e qria saber um modo de exemplifica

Eu por exemplo faço como o Charleston10 faz, coloco em um splash e mando abrir e fico usando a variável enquanto o sistema esta aberto, e depois que fecho o sistema eu nem me incomodo de fechar a variável, pois o windows faz isso naturalmente, sei que é errado, más é um vício que acabei criando rsrsrs
E pq ja ajudei também gente aki, que matava a conexão toda vez que saia de um form, então com isso tem que abrir toda hora a conexão.

Então se no seu sistema tiver um form Splash coloque o ABREBANCO que vc vai ficar com a variável aberta até vc sair do sistema, senão tiver pode colocar em um form do LOGIN, ou mesmo no load do form principal

Qqer coisa posta ai, ok
CHARLESTON10 14/11/2011 13:43:26
#389134
ALVAROVB2009 disse tudo agora
PHOENIX209E 14/11/2011 16:23:35
#389142
Nao trabalho com VB 6 e nem MySQL mas voce poderia seguir um modelo assim:
Crie um MODULO,e declare como publico os seguintes objetos:

Public CONEXAO As New ADODB.Connection = [Ô]CONEXAO = [Ô]DRIVER={MySQL ODBC 3.51 Driver};user=usuario;password=123;server=192.168.0.255;option=20499[Ô]


Toda vez que voce executar um comando,e for solicidado a conexao voce usa o objeto CONEXAO que está como public ali em cima,ou seja declarado no modulo e visivel por todo o projeto.Voce usa o metodo CONEXAO.Open() para abrir e CONEXAO.Close() para fechar.





MARCELO.TREZE 14/11/2011 17:29:00
#389148
Resposta escolhida
colega abra e feche a conexão no form principal, ou seja ao iniciar o programa abra a conexão, esta irá permanecer, e quando sair encerre e pronto, nos demais forms vc usaria apenas os recordsets
GUILER99 16/11/2011 09:22:21
#389209
Gente Muito Obrigado pela Resposta , fico muito grato pelo interesse de voces em querer esclarecer minha duvida

Grato
Guilherme Henrique
SPRITU 18/11/2011 09:28:07
#389360
Bom Dia Pessoal

Acho que o sofrimento ai pode ser resolvido de uma forma super simples (Class)




 
Private cnn As New ADODB.Connection

Public Property Get ConnectionString()
ConnectionString = [Ô][stringdeconexaoaqui][Ô]
End Property

Public Property Get ConexaoAtiva() As Connection

If Not cnn Is Nothing Then
ConexaoAtiva = cnn
End If

End Property

Public Sub AbrirConexao()

cnn.ConnectionString = Me.ConnectionString

cnn.Open

End Sub

Public Sub FecharConexao()
If cnn.State <> 0 Then
cnn.Close
End If
End Sub



Método de usar:


Dim minhacon as New Class1

minhacon.AbrirConexao

[ô]//ISSO EH UM EXEMPLO
recordset.open([Ô]select[Ô],minhacon.ConexaoAtiva)

minhacon.FecharConexao


Prontinhu!!!
Tópico encerrado , respostas não são mais permitidas