ADODC E ADODB

CHPMOTTA 27/03/2012 17:34:40
#398424
Hoje aconteceu uma coisa muito curiosa:

Estou acessando um banco de dados hospedado no Redehost. Até então estava tudo bem, mas hoje eu estou tento problemas com minha internet a rádio e o acesso estava muitíssimo lento. Então verifiquei com o comando Ping que estava perdendo pacotes de vez em quando.
Ficava muito lento quando eu dava um comando no ADODB (via código) por exemplo:

   Set TabAtividades = New ADODB.Recordset
TabAtividades.Open [Ô]SELECT * FROM [Atividades] Where [Atividade] IN [Ô] & UsuárioA & [Ô] ORDER BY [Prioridade] DESC;[Ô], Conexão, adOpenStatic, adLockOptimistic
Do While TabAtividades.EOF = False
ComboBox1.AddItem TabAtividades![Atividade]
TabAtividades.MoveNext
Loop


Isso demorava uma eternidade para executar...

outro exemplo:
TabContas.Filter = [Ô][Código] = [ô][Ô] & Código_ & [Ô][ô][Ô]

Esse comando demorava quase 30 segundo para executar.

Tá com problemas de pacote! Eu sei!
Mas a questão é o seguinte:
Eu descobri que se eu criar um ADODC no meu formulário e executar esses mesmo comando atravéz dele, a execução fica rápida tal como não tivesse problemas de pacote. Tal como:


   Adodc1.recordsource = [Ô]SELECT * FROM [Atividades] Where [Atividade] IN [Ô] & UsuárioA & [Ô] ORDER BY [Prioridade] DESC;[Ô]
Adodc1.refresh

Do While Adodc1.Recordset.EOF = False
ComboBox1.AddItem Adodc1.Recordset![Atividade]
Adodc1.Recordset.MoveNext
Loop



Alguém sabe por que isso acontece?
Será que se eu criar Adodc pra tudo, é melhor pro meu sistema?
ROBIU 28/03/2012 08:50:17
#398466
Veja se no Adodc a conexão já está aberta, quando você faz a consulta. Com ADODB você abre a conexão na hora da consulta. Verifica as propriedades de conexão do Adodc1 e coloca no código.

TabAtividades.CursorLocation = adUseClient
TabAtividades.LockType = adLockReadOnly
Conexao.CommandTimeout = 30
Conexao.CursorLocation = adUseClient
Conexao.Mode = adModeUnknown
Tópico encerrado , respostas não são mais permitidas