Jump to content

Archived

This topic is now archived and is closed to further replies.

Jonathan Fernando Filman

[Resolvido] Conexão em ADO no VB6

Recommended Posts

Olá galera é demorei mais estou aqui novamente pedindo a ajuda de vocês!

 

O que gostaria de saber é :

 

Qual a melhor conexão via ADO em VB6 e ACCESS 2003; como fazer uma BOA que é muito dificil de dar

errado?

 

 

Tenho um BD chamado Cadastro e uma tabela chamada Produtos que é onde armanezarei todos os produtos

cadastrados no Programa!

 

 

 

Conto com a ajuda de vocês.

 

 

 

Obrigado

Fico no Aguardo

Share this post


Link to post
Share on other sites

Olha só, costumo montar minhas conexões sempre assim:

 

uma variável para conexão (cn) declarada como adodb.connection e uma variável para abertura da tabela (rs) declarada como adodb.recordset

 

Não costumo ter problemas, a única coisa que já vi ocorrer de não ter achado solução é em casos de tabelas muito grandes (mais de 1.000.000 de registros), onde é comum ocorrer erro de tempo expirado, mas fora isso vai tudo muito bem.

 

Vou por um exemplo abaixo:

 

private cn as adodb.connection
private rs as adodb.recordset

private sub form_load

set cn = new adodb.connection
cn.connectionstring = ""
cn.open

set rs = new adodb.recordset
rs.open "select * from suatabela", cn, 3, 3

do until rs.eof
msgbox rs(0)
rs.movenext
loop

end sub

Se tiver dúvidas poste ai.

Share this post


Link to post
Share on other sites

Não entendi as partes que estão em vermelho para que serve

 

 

set cn = new adodb.connection

cn.connectionstring = ""

cn.open

 

set rs = new adodb.recordset

rs.open "select * from suatabela", cn, 3, 3

 

do until rs.eof

msgbox rs(0)

rs.movenext

loop

 

 

 

Obrigado pela ajuda!

Share this post


Link to post
Share on other sites

cn.connectionstring = ""

indica o banco, o driver, usuario , senha , tudo que é necessario para conectar no banco.

 

o primeiro tres deve ser CursorType(adOpenStatic)

ver dados de outros o usuarios na sua conexao

 

e o segundo LockType(adLockOptimistic)

tem a ver com permissões de atualização enquanto há outros usuário conectados.

 

 

acho que ta na ordem :S

Share this post


Link to post
Share on other sites

Olá

 

Agradecia ajuda pois estou a tentar utilizar um modulo à parte para a conexao, para não ter de estar sempre a escrevela para todos os formulários, mas está a dar erro, poderiam dar-me uma ajuda?

Estou a utilizar este código:

 

Function ConServer()
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.ConnectionString = "Driver={SQL Server};Server=xxxxxxx;Database=xxxx;Uid=xxxxx;Pwd=xxxxx"
con.Open
End Function

Private Sub Form_Load()
Dim sql As String
Dim rs As New ADODB.Recordset

Set rs = New ADODB.Recordset
Set rs.ActiveConnection = ConServer

sql = "Select * from Tabela"

rs.Open sql


txtOB = rs.Fields("TPP")
txtDrede = rs.Fields("TP")
txtDDCC = rs.Fields("LOcalidade")

End Sub

Share this post


Link to post
Share on other sites

Altere a função ConServer para isso:

Function ConServer()
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.ConnectionString = "Driver={SQL Server};Server=xxxxxxx;Database=xxxx;Uid=xxxxx;Pwd=xxxxx"
con.Open
ConServer = con '<---------
End Function

Falta o retorno.

Share this post


Link to post
Share on other sites

Tente assim.

Function ConServer() As ADODB.Connection '<-----------
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.ConnectionString = "Driver={SQL Server};Server=xxxxxxx;Database=xxxx;Uid=xxxxx;Pwd=xxxxx"
con.Open
ConServer = con '<---------
End Function

Coloque o erro, isso ajuda muito.

Share this post


Link to post
Share on other sites

Olá Rui.

 

E que linha o erro aponta?

 

Mas o que você pode fazer é o seguinte, ao invés de declarar suas variáveis de conexão dentro do function, declare-as fora como públicas. Ficaria assim:

 

Public con As ADODB.Connection

Function ConServer()
Set con = New ADODB.Connection
con.ConnectionString = "Driver={SQL Server};Server=xxxxxxx;Database=xxxx;Uid=xxxxx;Pwd=xxxxx"
con.Open
End Function

Private Sub Form_Load()
Dim sql As String
Dim rs As New ADODB.Recordset

Set rs = New ADODB.Recordset
Set rs.ActiveConnection = con

sql = "Select * from Tabela"

rs.Open sql


txtOB = rs.Fields("TPP")
txtDrede = rs.Fields("TP")
txtDDCC = rs.Fields("LOcalidade")

End Sub

Tente e veja se resolve.

Share this post


Link to post
Share on other sites

Olá obrigado pela colaboração

Usei o código que você mandou e dá o seguinte erro:

 

Run-time error '3709'

The connection cannot be used to perform this operation. Itis either closed or invalid this context

 

o Erro é na linha:

rs.Open sql

 

 

Qual será o motivo?

Share this post


Link to post
Share on other sites

Desculpe, faltou chamar a função:

 

Private Sub Form_Load()
Dim sql As String
Dim rs As New ADODB.Recordset

call ConServer

Set rs = New ADODB.Recordset
Set rs.ActiveConnection = con

sql = "Select * from Tabela"

rs.Open sql


txtOB = rs.Fields("TPP")
txtDrede = rs.Fields("TP")
txtDDCC = rs.Fields("LOcalidade")

End Sub

Tente agora. Sem chamar a função conn não estava aberto.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.