Notifications
Clear all

"Estouro" populando ListView

6 Posts
3 Usuários
0 Reactions
1,621 Visualizações
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Olá prezados amigos de fórum,

Tenho um projeto com banco de dados em Access, elaborado pelo Tomás e postado aqui no fórum por outro colega.
Peguei o modelo e fiz as devidas adaptações a minha necessidade. Ai que vem os problemas.

1º - Na hora de incluir um NOVO registro, ele retorna um erro na hora de gerar a autonumeração.
2º - Está dando um "Estouro" na hora de popular o ListView.

Acho que isso é devido ao meu banco access possuir atualmente 470 mil linhas (sim, isso mesmo) de processos digitalizados de um arquivo público.

Sei que o código não está na sua totalidade errado, pois, quando altero para um banco simples, de apenas 10 registros, ele popula o ListView normalmente.

Se alguém puder me ajudar, fico muito agradecido.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 06/08/2014 9:50 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bilokas,

Não cheguei a olhar seu arquivo, mas pelo que você escreveu não será possível listar num listbox.
Incluir as 470.000 linhas no listbox com certeza dará erro.

Minha sugestão é incluir no listbox só o resultado de um filtro desse mundo de registros que você tem, ou seja, uma centena de resultados ... e não 470mil.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/08/2014 10:41 am
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Não há nenhuma forma de contornar esse "estouro" ?


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 06/08/2014 11:17 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

bilokas,

Boa Tarde!

O erro está ocorrendo no evento Change do seu txtPesquisa. Lá, você tem o seguinte código:

        Dim i As Integer
        
        For i = 0 To banco.RecordCount - 1
            If Not IsNull(banco(0)) Then
                .ListItems.Add 1, , banco(0)
                .ListItems(1).ListSubItems.Add 1, , banco(1)
                .ListItems(1).ListSubItems.Add 2, , banco(2)
                .ListItems(1).ListSubItems.Add 3, , banco(3)
            End If
                
            banco.MoveNext
        Next i

A declaração da variável contadora i está com Integer (inteira). Entretanto, você quer percorrer todas as suas 470 mil linhas com uma variável Integer que não admite mais do que 32 mil linhas.

Assim, modifique o tipo da sua variável i para Long ou Double que aceita uma variedade maior de números.

Fiz aqui um teste com 100 mil linhas e a minha máquina do trabalho (que não é lá grande coisa), um Core I5, com 8 Gb de RAM, passou mais de 5 minutos para passar por 60 mil registros, chegando, inclusive a travar.

Dessa forma, não aconselho que você adote essa solução pois se demorou tudo isso em apenas 60 mil linhas, imagine em 470 mil.

Que solução eu adotaria? Primeiro, quando você passar para o Formulário de pesquisa você não deve carregar nada no ListView. Somente quando o usuário fizer as devidas escolhas e clicar no botão Pesquisar é que você faz uma consulta SQL na sua base e carrega no ListView apenas a consulta que atende aos critérios solicitados na pesquisa.

Outra coisa que você pode fazer é trabalhar diretamente no próprio Access, sem a necessidade de utilização do Excel.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 06/08/2014 12:46 pm
(@bilokas)
Posts: 168
Estimable Member
Topic starter
 

Obrigado por responder Wagner Morel,

Interessantes observações, vou analisar aqui e logo informo o que deu pra fazer pra otmizar essa busca.


DGAF / DVGD - Divisão de Gestão de Documentos
Rafael A. Guimarães
[email protected]

 
Postado : 06/08/2014 1:20 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Ok. De nada!

Peço que vote positivamente clicando na mãozinha ao lado da ferramenta CITAR.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 06/08/2014 5:07 pm