Página 1 de 1

Filtro em ListView

Enviado: 23 Ago 2016 às 22:37
por avgsantos
Boa noite, Pessoal do Fórum

Não estou conseguindo solucionar o problema abaixo, tenho um formulário que busca o registro de um cliente dentro da listview conforme o código abaixo da primeira parte, até ai tudo bem está funcionando, minha duvida é a segunda parte "filtro" conforme eu digito uma palavra ele filtra a palavra e retorna o valor digitado blz, agora quando eu apago a palavra do textbox "txt_busca" estão retornando todos os registro de todos os clientes o correto seria retorna o valor somente daquele cliente. Seria possível fazer isso: Obrigado mais uma vez

****Primeira Parte*******
Sub busca_regitros()
Dim linha As Integer
Dim codigo As String
linha = 2
codigo = txt_codigo
Sheets("Faltas e Saidas").Select
list_historico.ListItems.Clear

Do Until Sheets("Faltas e Saidas").Cells(linha, 1) = ""

If Sheets("Faltas e Saidas").Cells(linha, 1) = codigo Then

'coloca o cabeçalho no listview historico
With list_historico
.ColumnHeaders.Clear
.Gridlines = True
.View = lvwReport
.FullRowSelect = True

.ColumnHeaders.Add , , " Data", 48
.ColumnHeaders.Add , , " Motivo / Observação", 315
.ColumnHeaders.Add , , " Cadastrado", 54
.ColumnHeaders.Add , , " ID", 20
End With

'Adiciona os dados a listview historico
Set li = list_historico.ListItems.Add(Text:=Format(Sheets("Faltas e Saidas").Cells(linha, 4).Value, "dd/mm/yyyy")) 'Data
li.SubItems(1) = Sheets("Faltas e Saidas").Cells(linha, 3).Value 'Motivo
li.SubItems(2) = Sheets("Faltas e Saidas").Cells(linha, 5).Value 'Cadastrado
li.SubItems(3) = Sheets("Faltas e Saidas").Cells(linha, 6).Value 'Id
End If

linha = linha + 1
Loop

lbl_registros = "Total de Ocorrencia: " & Me.list_historico.ListItems.Count
End Sub

******Segunda Parte********
Private Sub txt_busca_Change()
Dim valor_pesq As String
Dim linha As Integer
Dim coluna As Integer
Dim valor_celula As String
valor_pesq = txt_busca.Text
coluna = 3
linha = 2
list_historico.ListItems.Clear
Plan7.Select
With Plan7
While .Cells(linha, coluna).Value <> Empty
valor_celula = .Cells(linha, coluna).Value
If UCase(Left(valor_celula, Len(valor_pesq))) = UCase(valor_pesq) Then
Set li = list_historico.ListItems.Add(Text:=Plan7.Cells(linha, 4).Value) 'Data
li.ListSubItems.Add Text:=Plan7.Cells(linha, 3).Value 'Motivo
li.ListSubItems.Add Text:=Plan7.Cells(linha, 5).Value 'Cadastrado
li.ListSubItems.Add Text:=Plan7.Cells(linha, 6).Value 'ID
End If
linha = linha + 1
Wend
End With
lbl_registros = "Total de Ocorrencia: " & Me.list_historico.ListItems.Count
End Sub

Re: Filtro em ListView

Enviado: 25 Ago 2016 às 21:51
por avgsantos
Boa noite, Pessoal

Segue o aquivo excel para entender melhor, o filtro funciona porém quando eu apago a palavra do campo buscar ele retorna todos os valores dos cliente da tabela.

Obrigado

Re: Filtro em ListView

Enviado: 26 Ago 2016 às 20:39
por Basole
avgsantos, eu nao entendi direito o funcionamento do sue formulario, mas tente isso:

insira esta linha de codigo no inicio do seu evento txt_busca_Change()
Código: Selecionar todos
 If Len(txt_busca.Text) = 0 Then cbx_nome_Change: Exit Sub 

Filtro em ListView

Enviado: 27 Ago 2016 às 15:56
por avgsantos
Boa tarde, Basole
Adicionei a linha porém está trazendo informação historico de ocorrencia de outro cliente.
Exemplo: Buscar o nome pelo marcio no historico de ocorrencia tem saida,licença e etc ao colocar o nome "saida" lá embaixo da caixa de texto ele está trazendo "suspenso e saida", suspenso não tem no historico ocorrencia do marcio ou seja está trazendo todas as ocorrencias dos clientes cadastrado.

Filtro em ListView

Enviado: 01 Set 2016 às 21:00
por avgsantos
Boa noite, Pessoal
Alguém poderia me ajudar a solucionar meu problema.
Agradeço
avgsantos

Re: Filtro em ListView

Enviado: 02 Set 2016 às 11:26
por Basole
Boa tarde, Basole
Adicionei a linha porém está trazendo informação historico de ocorrencia de outro cliente.
Exemplo: Buscar o nome pelo marcio no historico de ocorrencia tem saida,licença e etc ao colocar o nome "saida" lá embaixo da caixa de texto ele está trazendo "suspenso e saida", suspenso não tem no historico ocorrencia do marcio ou seja está trazendo todas as ocorrencias dos clientes cadastrado.
@avgsantos acredito se seja facil fazer o filtro, o dificil, como disse anteriormente, é entender melhor o funcionamento da do seu form, ou o que voce esta tentando fazer?

Filtro em ListView

Enviado: 02 Set 2016 às 20:37
por avgsantos
Boa noite, Basole
Abre o formulário e selecione um nome, pode ser marcio irá trazer todas as informações do cliente e histórico de ocorrências, tem uma caixa de texto no fim do formulário para filtrar a ocorrência por motivo, quando vc digita a palavra "suspenso" está trazendo esta ocorrência mas não tem cadastro desta palavra no histórico de ocorrência do marcio, segue anexo as imagens passo a passo para entender melhor.

Filtro em ListView

Enviado: 04 Set 2016 às 12:31
por avgsantos
Alterei a rotina abaixo, deu certo

Private Sub txt_busca_Change()
While .Cells(linha, coluna).Value <> Empty
valor_celula = .Cells(linha, coluna).Value
If UCase(Left(valor_celula, Len(valor_pesq))) = UCase(valor_pesq) And Me.txt_codigo.Text = .Cells(linha, 1) Then

avgsantos