CONSUMO EXCESSIVO DE MEMORIA COM ADO
                    Bom dia;
Tenho uma rotina simples que basicamente abre uma conexão ADO, faz um select e um update e encerra a conexão.
Este código é executado de 1 em 1 segundo utilizando para isso um timer. Porém, à  medida que o programa é executado a memória vai se sujando.
Segue abaixo o código. Alguém já teve algum problema parecido e sabe como resolver?
Além de utilizar o comando rcsRecord.Open já tentei utilizar o comando rcsRecord = conConexao.Execute e o resultado é o mesmo.
Estou utilizando VB6 + SP6 + MDAC 2.8.
Grato;
Private Sub subFazADO()
Dim rcsRecord As ADODB.Recordset
Dim conConexaoIp21 As ADODB.Connection
Dim bolConectado As Boolean
Dim strServidor As String
tmrAtualiza.Enabled = false
 
If conConexaoIp21 Is Nothing Then
Set conConexaoIp21 = New ADODB.Connection
End If
    
If rcsRecord Is Nothing Then
Set rcsRecord = New ADODB.Recordset
End If
strServidor = txtServidor.Text
    
conConexaoIp21.Open ("DRIVER={AspenTech SQLplus};TIBCO=N; CHARISNULL=Y;CONVERTERRORS=Y;ROWID=N;ALLFIELDS=N;ReadOnly=N;CHARTIME=Y;CHARFLOAT=N;CHARINT=Y;TABLE=;MAXROWS=100000;TIMEOUT=;ADS=" & strServidor & ";Port=10014;HOST=" & strServidor)
    
rcsRecord.Open "SELECT IP_INPUT_VALUE as intValor FROM " & txtTag.Text, conConexaoIp21, adOpenForwardOnly, adLockReadOnly, adCmdTable
    
If Not IsNull(rcsRecord!intValor) Then
txtUltimoValor.Text = rcsRecord!intValor
End If
    
rcsRecord.Close
    
Set rcsRecord = Nothing
    
conConexaoIp21.Execute "UPDATE " & txtTag.Text & " SET IP_INPUT_VALUE = ' " & txtNovoValor.Text & "'"
    
conConexaoIp21.Close
    
Set conConexaoIp21 = Nothing
tmrAtualiza.Enabled = true
    
End Sub
            Tenho uma rotina simples que basicamente abre uma conexão ADO, faz um select e um update e encerra a conexão.
Este código é executado de 1 em 1 segundo utilizando para isso um timer. Porém, à  medida que o programa é executado a memória vai se sujando.
Segue abaixo o código. Alguém já teve algum problema parecido e sabe como resolver?
Além de utilizar o comando rcsRecord.Open já tentei utilizar o comando rcsRecord = conConexao.Execute e o resultado é o mesmo.
Estou utilizando VB6 + SP6 + MDAC 2.8.
Grato;
Private Sub subFazADO()
Dim rcsRecord As ADODB.Recordset
Dim conConexaoIp21 As ADODB.Connection
Dim bolConectado As Boolean
Dim strServidor As String
tmrAtualiza.Enabled = false
If conConexaoIp21 Is Nothing Then
Set conConexaoIp21 = New ADODB.Connection
End If
If rcsRecord Is Nothing Then
Set rcsRecord = New ADODB.Recordset
End If
strServidor = txtServidor.Text
conConexaoIp21.Open ("DRIVER={AspenTech SQLplus};TIBCO=N; CHARISNULL=Y;CONVERTERRORS=Y;ROWID=N;ALLFIELDS=N;ReadOnly=N;CHARTIME=Y;CHARFLOAT=N;CHARINT=Y;TABLE=;MAXROWS=100000;TIMEOUT=;ADS=" & strServidor & ";Port=10014;HOST=" & strServidor)
rcsRecord.Open "SELECT IP_INPUT_VALUE as intValor FROM " & txtTag.Text, conConexaoIp21, adOpenForwardOnly, adLockReadOnly, adCmdTable
If Not IsNull(rcsRecord!intValor) Then
txtUltimoValor.Text = rcsRecord!intValor
End If
rcsRecord.Close
Set rcsRecord = Nothing
conConexaoIp21.Execute "UPDATE " & txtTag.Text & " SET IP_INPUT_VALUE = ' " & txtNovoValor.Text & "'"
conConexaoIp21.Close
Set conConexaoIp21 = Nothing
tmrAtualiza.Enabled = true
End Sub
                    BOCHECHA, CADE O CLAUDINHO 
Brincadeiras a parte,
a demora está que toda vez que você acessa a rotina você cria uma conexão, cria um recorset, faz o Update e depois os destroi.
a forma mais rápida é criar a conexão e o recordset apenas 1 vez e a cada atualização você apenas abre a tabela, atualiza e a fecha.
                
            Brincadeiras a parte,
a demora está que toda vez que você acessa a rotina você cria uma conexão, cria um recorset, faz o Update e depois os destroi.
a forma mais rápida é criar a conexão e o recordset apenas 1 vez e a cada atualização você apenas abre a tabela, atualiza e a fecha.
                    Não Bochecha, não estou sugerindo que você crie variaveis globais.
eu estou sugerindo que você declare as variaveis no General Declarations do seu Form, abra as conexões em seu form Load, e abra na rotina apenas a tabela,
            eu estou sugerindo que você declare as variaveis no General Declarations do seu Form, abra as conexões em seu form Load, e abra na rotina apenas a tabela,
                    BOCHECHA
NO FORM1 SE VOCÃÅ DECLARAR
ELA SERà  UMA VARIAVEL QUE APENAS AS ROTINAS DO FORM1 TERÃO ACESSO, JA SE VOCÃÅ DECLARAR
todos os forms abertos após o form1 terão acesso a está variavel.
                
            NO FORM1 SE VOCÃÅ DECLARAR
 Option Explicit 
Private rcsRecord As ADODB.Recordset 
Private conConexaoIp21 As ADODB.Connection 
Private Sub Form_Load() 
End Sub ELA SERà  UMA VARIAVEL QUE APENAS AS ROTINAS DO FORM1 TERÃO ACESSO, JA SE VOCÃÅ DECLARAR
Option Explicit 
Public rcsRecord As ADODB.Recordset 
Public conConexaoIp21 As ADODB.Connection 
Private Sub Form_Load() 
End Sub  todos os forms abertos após o form1 terão acesso a está variavel.
                        Tópico encerrado , respostas não são mais permitidas
                    
                
