COMO FAZER UMA FILTRAGEM EFICIENTE COM STREAM
Olá Galera, boa tarde.
Estou com um probleminha nesta rotina pois não consigo fazer uma filtragem eficiente.
Isto é : Fazer com que me filtre de um modo eficiente em uma ListView á medida que vou digitando , independente que no texto a procurar esteja em Maiúsculas ou minúsculas.
Deixo aqui a rotina para que me possam ajudar.
Obrigado desde já pela vossa atenção.
Atenciosamente.
Programadorvb6
Estou com um probleminha nesta rotina pois não consigo fazer uma filtragem eficiente.
Isto é : Fazer com que me filtre de um modo eficiente em uma ListView á medida que vou digitando , independente que no texto a procurar esteja em Maiúsculas ou minúsculas.
Deixo aqui a rotina para que me possam ajudar.
[ô][ô][ô] <summary>
[ô][ô][ô] -------------------------------------
[ô][ô][ô] Função para filtrar em uma ListView.
[ô][ô][ô] -------------------------------------
[ô][ô][ô] <param name=[Ô] Indica_Ficheiro[Ô]>Indicar onde ler o arquivo de texto</param>
[ô][ô][ô] <param name=[Ô]Quadro[Ô]>Nome da ListView a utilizar</param>
[ô][ô][ô] <param name=[Ô]Filtrar_Palavra[Ô]>Pavavra a ser filtrada.</param>
[ô][ô][ô]
[ô][ô][ô] </summary>
Public Sub Filtrar_Dados(ByVal Indica_Ficheiro As String, ByVal Quadro As System.Object, ByRef Filtrar_Palavra As String)
[ô]declara um streamReader e passa o caminho e nome do arquivo texto
Quadro.Items.Clear()
If ExisteFicheiro(Indica_Ficheiro) = True Then
If ContaLinhas(Indica_Ficheiro) = 0 Then Exit Sub
Dim SR As New StreamReader(Indica_Ficheiro)
Try
[ô] variavel que trata as linhas que são lidas
Dim strTemp() As String
Do While SR.Peek <> -1 [ô] Utilize Peek para ler o arquivo até que não haja mais linhas
[ô] cria uma variavel para o ListViewItems
Dim LVItem As New ListViewItem
[ô] Le a proxima linha no arquivo e a separa se estiver usando TAB
strTemp = SR.ReadLine.Split([Ô]|[Ô])
[ô] Extrai o primeiro elemento na linha e atribui os dados a primeira coluna
If strTemp(0).ToString.Contains(Filtrar_Palavra) Then
[ô] Inclui o item no ListView
[ô] Atribui as demais linhas ao subitens
LVItem.Text = strTemp(0).ToString
LVItem.SubItems.Add(strTemp(1).ToString)
LVItem.SubItems.Add(strTemp(2).ToString)
Quadro.Items.Add(LVItem)
ElseIf Filtrar_Palavra = Nothing Then
LVItem.Text = strTemp(0).ToString
LVItem.SubItems.Add(strTemp(1).ToString)
LVItem.SubItems.Add(strTemp(2).ToString)
Quadro.Items.Add(LVItem)
End If
Loop
[ô]SR.Dispose()
[ô] SR.Close() [ô] fehca o StreamReader
Catch ex As Exception
MessageBox.Show([Ô]Erro ao ler o arquivo.[Ô], [Ô]Atenção:[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
SR.Dispose()
SR.Close()
End Try
End If
End Sub
Obrigado desde já pela vossa atenção.
Atenciosamente.
Programadorvb6
Mostre pra gente como é o tal ficheiro... talvez seja possÃvel carregá-lo de outra maneira para filtrar...
Boas Galera!
O ficheiro é em Txt e tem este formato :
Battlefield 3|HJUY-OPIU-FGJ0-HGF3-HJGF||
Call Of Duty MW3|GHFR-POIU-MJKO-865G-H7N3||
The Sims 3|DSRE-HGJK-UYTM-LKJH||
The Sims Medieval: Piratas e Nobres|MNHJ-LOIU-98JH-GFT7||
VBMania - Site|jkjghgdsfjhsdjfh|ProgramadorVB6|
O ficheiro é em Txt e tem este formato :
Battlefield 3|HJUY-OPIU-FGJ0-HGF3-HJGF||
Call Of Duty MW3|GHFR-POIU-MJKO-865G-H7N3||
The Sims 3|DSRE-HGJK-UYTM-LKJH||
The Sims Medieval: Piratas e Nobres|MNHJ-LOIU-98JH-GFT7||
VBMania - Site|jkjghgdsfjhsdjfh|ProgramadorVB6|
é vc mesmo quem gera esse arquivo? Se for, troque o [Ô]|[Ô] por ponto-e-vÃrgula e vai poder abrir esse arquivo como se fosse uma tabela e filtrar normalmente com SQL
Bom Dia PROGVB6,
Cara, você pode otimizar a sua pesquisa utilizando arvore binaria.
No momento do Load do Form, você ordena o vetor base ordem alfabetica ou um ID.
Depois vc pode utilizar um algoritmo simples de pesquisa encadeada em arvore (Dividir e conquistar)
Basicamente é um recursão, quebra o vetor no meio e verifica e vai fazendo isso ate finalizar o vetor, vc reduz a metade do tempo, e a eficiecia é bem maior =)
qualquer coisa, da um tok que eu monto um exemplo aqui =)
Cara, você pode otimizar a sua pesquisa utilizando arvore binaria.
No momento do Load do Form, você ordena o vetor base ordem alfabetica ou um ID.
Depois vc pode utilizar um algoritmo simples de pesquisa encadeada em arvore (Dividir e conquistar)
Basicamente é um recursão, quebra o vetor no meio e verifica e vai fazendo isso ate finalizar o vetor, vc reduz a metade do tempo, e a eficiecia é bem maior =)
qualquer coisa, da um tok que eu monto um exemplo aqui =)
Tópico encerrado , respostas não são mais permitidas