Olá pessoal, preciso de ajuda novamente:
Vou começar explicando como funciona o processo todo para facilitar o entendimento.
A empresa do meu cliente usa o sistema PROTEUS. No sistema tenho uma tabela que contém a relação de todos os clientes inadimplentes. Daí, para facilitar a manipulação de dados, eu tenho um ACCESS que vai dentro do sistema e busca as informações contidas nessa tabela.Para melhorar a experiência de visualização dos dados, pelo usuário, eu tenho um arquivo em Excel que carrega uma listvew com esses dados do ACCESS. Tudo funciona bem, porém:
...ao carregar a listview usando como base de dados a consulta do ACCESS-PROTEUS, o processo fica extremamente lento! Ja descobri que a lentidão ocorre pois a listview é populada linha-a-linha e a cada vez que roda o código para buscar uma linha na base, a consulta no servidor do PROTEUS é realizada novamente. É como se para toda linha que existe na base do ACCESS, é feita uma consulta no servidor atualizando todo o banco novamente.
Minha duvida é: Seria possível desabilitar essa "consulta automática" do ACCESS toda vez que o Excel fizer a leitura/população da Listview?
Obs: Vou postar o código que uso para criar a conexão, abrir o recordset e popular a listview, pois não adianta postar o arquivo, haja vista que não seria possível criar a conexão do ACCESS com o servidor do cliente.
Public Conexao As New ADODB.Connection
Public Rst As New ADODB.Recordset
Private Sub UserForm2_Initialize()
With L_Relatorio
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
.ColumnHeaders.Add Text:="CHAVE", Width:=0
.ColumnHeaders.Add Text:="FILIAL", Width:=40
.ColumnHeaders.Add Text:="NOTA", Width:=70
.ColumnHeaders.Add Text:="CLIENTE", Width:=220
.ColumnHeaders.Add Text:="SALDO PARCELADO", Width:=50, Alignment:=0
.ColumnHeaders.Add Text:="SALDO EM ABERTO", Width:=80, Alignment:=0
.ColumnHeaders.Add Text:="ATRASO (DIAS)", Width:=80, Alignment:=0
.ColumnHeaders.Add Text:="FONE", Width:=70, Alignment:=0
.ColumnHeaders.Add Text:="EMISSÃO", Width:=50, Alignment:=0
End With ''
Set Rst = New ADODB.Recordset
Set Conexao = New ADODB.Connection
With Conexao
.Provider = "Microsoft.ACE.OLEDB.16.0"
.Properties("User ID") = "Admin"
.Properties("Jet OLEDB:Database Password") = "12345"
.ConnectionString = "\10.1.1.8Bd BancoBanco Inadimplência.mdb" ' CAMINHO REDE
.Open
End With
Rst.Open "SELECT * FROM dbo_ANALIZE_COBRANCA_AQUILA_AGR2 WHERE FILIAL = '0101' ORDER BY DIAS_ATRAZO DESC", Conexao, adOpenKeyset, adLockOptimistic, adCmdText
L_Relatorio.ListItems.Clear
While Not Rst.EOF
Set List = L_Relatorio.ListItems.Add(Text:=Rst(0)) 'PK
List.SubItems(1) = Rst(1) 'FILIAL
List.SubItems(2) = Rst(2) 'NOTA
List.SubItems(3) = Rst(8) 'CLIENTE
List.SubItems(4) = Rst(4) 'SALDO PARCELADO
List.SubItems(5) = Rst(5) 'SALDO EM ABERTO
List.SubItems(6) = Rst(15) 'ATRASO
List.SubItems(7) = Rst(9) 'FONE
List.SubItems(8) = Rst(6) 'EMISSAO
Rst.MoveNext
Wend
Set Conexao = Nothing
Set Rst = Nothing
End Sub
Postado : 16/11/2016 2:08 pm