USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Método correto para abrir ADODB.Recordset?
RMI@
CAMPO BELO
MG - BRASIL
ENUNCIADA !
Postada em 29/01/2009 12:23 hs            
Amigos,
Eu sempre abro minhas tabelas (mysql) assim:
1) Declaro a variável como sendo pública em um módulo, pra servir em todos os forms
Public rs As ADODB.Recordset
2) O procedimento abaixo é feito apenas uma vez (no início do programa - form de login)
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
 
Pois bem, depois, sempre que eu preciso manipular uma tabela qualquer (em qualquer form), eu faço:
If rs.State = 1 Then rs.Close
e logo em seguida faço a conexão.
 
o problema é o seguinte: de um form pro outro, costuma dar problema, ja que, se eu estou em um rotina com a variável e logo chamo outro form para exibir alguns registros, e neste form, logo de entrada, Form_Load() tem uma outra rotina com a mesma variável, vai dar problema.
 
Então estou pensando em não declarar a variável como pública, e em todos os forms fazer o procedimento acima. Mas este método seria o correto? Ou, o mais correto ainda seria em cada função dentro de cada form?
 
Obrigado!!!
 
 
 
 
   
Alexandre Patos
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
ENUNCIADA !
Postada em 31/01/2009 09:53 hs            
rmi, eu abro a conexao só no login
agora os recordsets eu abro dentro de cada procedimento ou funcao, a nao ser que preciso desse recordset no projeto todo, caso contrario abro um pra cada um , e crio o objeto rs em cada funcao. e assim que uso ja mato ele tambem, rs.close, set rs = nothing
   
ivanhoe
BARRA BONITA
SP - BRASIL
Postada em 03/02/2009 23:10 hs            
Caro RMI@;
 
Faço tambem como o Alexandre descreveu, so abro como Public uma tabela de configuracoes
do sistema que de vez em quando tem que atualizar algum campo ou atualizar variavel, do resto
cada form abro o que eu precisar e depois fecha com o form...
 
Att.
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 03/02/2009 23:47 hs            
Veja como eu faço em um módulo
 
Public Conexao As New ADODB.Connection
 
Public Function Conecta(ByVal Valor As Boolean)
Dim CON_STR As String
Dim SERVER As String
Dim USER As String
Dim SENHA As String
Dim PORTA As String
Dim BD As String
'verifica se a conexao está aberta e fecha para evitar erros
If Conexao.State = 1 Then
Conexao.Close
Set Conexao = Nothing
Valor = True
End If
If Valor = True Then
SERVER = "**.****.**"
BD = "****"
PORTA = "3306"
USER = "****"
SENHA = "*******"
CON_STR = "DRIVER={MySQL ODBC 3.51 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
 
agora para os recordsets eu procedo da seguinte maneira
 
suponha que eu vá fazer uma pesquisa, usando um Command button
 
então declaro o recordset dentro do evento assim
 
Private Sub command1_Click()
Dim RS as Recordset
SQL = "SELECT * FROM tabela"
Set RS = Conexao.Execute(SQL)
....
End Sub
 
bom só explicando abro a conexão no load do form assim
 
Conecta True
 
e fecho no unload
 
Conecta False
 
e nunca tive problemas
TÓPICO EDITADO
 
RMI@
CAMPO BELO
MG - BRASIL
ENUNCIADA !
Postada em 04/02/2009 09:10 hs            
Certíssimo amigos, ja estou abrindo e fechando dentro de cada função. De fato, evita grandes problemas, é preferível ter um volume maior de código mas ficar tranquilo.

Obrigado a todos pelas dicas.
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página