NAO REPETIR OS RECORDSETS

USUARIO.EXCLUIDOS 26/05/2005 10:56:54
#85302
tenho o seguinte codigo:

Set conn = New Connection
conn.CursorLocation = adUseClient
conn.Open CN

Dim Recordset1 As New ADODB.Recordset
Dim Recordset2 As New ADODB.Recordset
Dim Recordset3 As New ADODB.Recordset
Dim Recordset4 As New ADODB.Recordset

Recordset1.Open "select * from dados", conn, adOpenStatic, adLockReadOnly, adCmdText
Recordset2.Open "select * from dados", conn, adOpenStatic, adLockReadOnly, adCmdText
Recordset3.Open "select * from dados", conn, adOpenStatic, adLockReadOnly, adCmdText
Recordset4.Open "select * from dados", conn, adOpenStatic, adLockReadOnly, adCmdText

frm.ID.Text = Recordset1("ID")
frm.nome.Text = Recordset2("nome")
frm.bi.Text = Recordset3("bi")
frm.telefone.Text = Recordset4("telefone")

Recordset1.Close
Recordset2.Close
Recordset3.Close
Recordset4.Close

Set conn = Nothing
Set Recordset = Nothing

Gostaria de saber como faço para utilizar um unico Recordset, e n repetir isto td...

é q ja me disseram q esta n é a forma mais correcta


Obrigado
LCSD 26/05/2005 11:06:09
#85303
Resposta escolhida
Reyad

Como, pelo visto, todos estão na mesma tabela DADOS, é só alterar para:

frm.ID.Text = Recordset1("ID").value
frm.nome.Text = Recordset1("nome").value
frm.bi.Text = Recordset1("bi").value
frm.telefone.Text = Recordset1("telefone") .value


Não tem motivo para abrir 4 Recordsets, além disto o ideal seria um nome para o RecordSet, poderia ser rsTemp indicando que é temporário e local.

Dim Recordset1 As ADODB.Recordset 
Set RecordSet1 = New ADODB.RecordSet
....
....
....
....
....

'Após ter usado, encerre e destrua
RecordSet1.CLOSE
Set RecordSet1 = Nothing






Ainda, não declare e instancie, isto ocosionará problemas no Encerramento/Destruição do objeto, ele permanecerá na memória, altera para:

SE tiver dúvidas ainda, coloque o trecho que não entendeu

Até Breve
[s92]
WEBMASTER 26/05/2005 11:06:37
#85304
Tente isso,

tenho o seguinte codigo:

Set conn = New Connection
conn.CursorLocation = adUseClient
conn.Open CN

Dim Recordset1 As New ADODB.Recordset

Recordset1.Open "select * from dados", conn, adOpenStatic, adLockReadOnly, adCmdText

frm.ID.Text = Recordset1("ID")
frm.nome.Text = Recordset1("nome")
frm.bi.Text = Recordset1("bi")
frm.telefone.Text = Recordset1("telefone")

Recordset1.Close
Set conn = Nothing

WEBMASTER 26/05/2005 11:08:01
#85305
Foi mal Kpellarj
LCSD 26/05/2005 11:10:39
#85306
Leopoldo

O conn deveria ser público e no local onde você indicou:

Set conn = Nothing 


Deveria estar o RecordSet

Set RecordSet1 = Nothing


Assim o objeto RecordSet1 é retirado da memória, mas sendo uma conexão declarada ainda ficaria aberta para outras consultas, se destruir pura e simplesmente, sem encerrar poderá permanecer na memória a conexão tornando o sistema lento, já que o Access entenderá como uma Conexão a mais.

Acredito que você trocou a Conn pelo RecordSet1 aqui.

Até Breve
[s92]
USUARIO.EXCLUIDOS 26/05/2005 11:12:08
#85308
obrigado ppl pela vossa ajuda

cumps

WEBMASTER 26/05/2005 11:13:27
#85309

Eu só tirei a redundà¢ncia do código


A Conexão do banco tem que ser feita no início da aplicação e encerra-lá no final.
LCSD 26/05/2005 11:17:46
#85310
Reyad

Só encerre o tópico se o mesmo resolver o teu problema, teste antes, Ok?

Se tiver alguma dúvida poste novamente.
[s50]

Leopoldo

Sim, a conexão tem que ser feita no início, mas este RecordSet pelo visto é local e só deve encerrar a conexão no encerramento do aplicativo, mesmo assim antes deve-se fechá-lo, como é local, a conexão conn deve permanecer aberta, por isto acho que você postou o Conn sendo destruido (Nothing) mas pensando em destruir o RecordSet1, foi isso.
[s50]
USUARIO.EXCLUIDOS 26/05/2005 11:46:32
#85318
ta resolvido mais uma vez obrigado ppl

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