Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por PauloD » Qua Nov 20, 2019 10:51 am

Boas Tardes a todos

volto a precisar de ajuda pois não estou a conseguir fazer o que pretendo e já penso que não vou conseguir
é o seguinte

no ficheiro em anexo pretendo fazer a pesquisa pelos campos da pesquisa
exemplo
por data por mês etc
e depois por data e mês e tipo formação etc
e data , mês, tipo formação, formação etc e assim ate chegar a pesquisa por todos
não sei como fazer pois o excel já não me deixa adicionar mais código existe alguma maneira de fazer o que pretendo de forma mais simples

obrigado fico a aguardar ajuda
Anexos
Arquivo Formações.7z
(132.57 KiB) Baixado 6 vezes



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por PauloD » Qua Nov 20, 2019 12:21 pm

amigos
ou estou muito errado ou o meu problema era simples
podem me ver se esta codigo é mesmo assim isto depois de ter colocado uma pesquisa para cada opção
adicionei depois este codigo e pelo que estou a testar é o que pretendo so nao estou a acreditar ser uma soluçao tao simples

'filtrar todos
If pesquisadata.Text >= "" And pesquisames.Text >= "" And pesquisatipoformacao.Text >= "" And pesquisaformacao.Text >= "" And pesquisadisciplina.Text >= "" And pesquisasubunidades.Text >= "" And Pesquisalocal.Text >= "" And pesquisaformador.Text >= "" And pesquisaformandos.Text >= "" Then
ListView1.ListItems.Clear
textoDigitado = pesquisadata.Text
textoDigitado1 = pesquisames.Text
textoDigitado2 = pesquisatipoformacao.Text
textoDigitado3 = pesquisaformacao.Text
textoDigitado4 = pesquisadisciplina.Text
textoDigitado5 = pesquisasubunidades.Text
textoDigitado6 = Pesquisalocal.Text
textoDigitado7 = pesquisaformador.Text
textoDigitado8 = pesquisaformandos.Text
'código que irá filtrar os nomes
linha = 2
linhatabela = 1
While Folha1.Cells(linha, 1).Value <> Empty
TextoCelula = Folha1.Cells(linha, 2).Value
TextoCelula1 = Folha1.Cells(linha, 8).Value
TextoCelula2 = Folha1.Cells(linha, 4).Value
TextoCelula3 = Folha1.Cells(linha, 3).Value
TextoCelula4 = Folha1.Cells(linha, 9).Value
TextoCelula5 = Folha1.Cells(linha, 5).Value
TextoCelula6 = Folha1.Cells(linha, 7).Value
TextoCelula7 = Folha1.Cells(linha, 6).Value
TextoCelula8 = Folha1.Cells(linha, 10).Value
'quebra a palavra atual pela esquerda conforme a quantidade de letras digitadas e compara com o texto digitado
If InStr(UCase(TextoCelula), UCase(textoDigitado)) > 0 Then
If InStr(UCase(TextoCelula1), UCase(textoDigitado1)) > 0 Then
If InStr(UCase(TextoCelula2), UCase(textoDigitado2)) > 0 Then
If InStr(UCase(TextoCelula3), UCase(textoDigitado3)) > 0 Then
If InStr(UCase(TextoCelula4), UCase(textoDigitado4)) > 0 Then
If InStr(UCase(TextoCelula5), UCase(textoDigitado5)) > 0 Then
If InStr(UCase(TextoCelula6), UCase(textoDigitado6)) > 0 Then
If InStr(UCase(TextoCelula7), UCase(textoDigitado7)) > 0 Then
If InStr(UCase(TextoCelula8), UCase(textoDigitado8)) > 0 Then
'se a comparação for igual será adicionado no formulario
Set Item = ListView1.ListItems.Add(Text:=Folha1.Cells(linha, 1))
Item.SubItems(1) = Folha1.Cells(linha, 2) ' data
Item.SubItems(2) = Folha1.Cells(linha, 3) ' formacao
Item.SubItems(3) = Folha1.Cells(linha, 4) ' tipo formacao
Item.SubItems(4) = Folha1.Cells(linha, 5) ' subunidades
Item.SubItems(5) = Folha1.Cells(linha, 6) ' formador
Item.SubItems(6) = Folha1.Cells(linha, 7) ' local
Item.SubItems(7) = Folha1.Cells(linha, 8) ' mes
Item.SubItems(8) = Folha1.Cells(linha, 9) 'disciplina
Item.SubItems(9) = Format(Folha1.Cells(linha, 11).Value, "hh:mm") 'horas
Item.SubItems(10) = Folha1.Cells(linha, 10) ' formandos
End If
End If
End If
End If
End If
End If
End If
End If
End If
linha = linha + 1
Wend
Exit Sub
End If
contaregistros = "Número de Registos: " & Me.ListView1.ListItems.Count
End Sub



PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por PauloD » Qua Nov 20, 2019 12:25 pm

alias apliquei esse codigo logo a seguir ao loop



PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por PauloD » Qua Nov 20, 2019 12:55 pm

logo vi que a coisa nao esta muito bem
agora não soma corretamente na pesquisa ao iniciar o userform mas soma correto na filtragem não estou a perceber



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1271
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por Reinaldo » Qua Nov 20, 2019 2:52 pm

Lembro de já haver visto algo parecido com esse projeto; mas vamos lá
Aplicação de filtro é algo relativamente simples, porem deve se observado alguns detalhes importantes.
O mais importante e quando será aplicado/iniciado esse filtro.
Aplicação Filtro em campo numérico e "ligeiramente" diferente da aplicação em campos Texto.
Em um campo texto é possível a cada digitação de caractere "ir filtrando" os dados (algo que particularmente não gosto), já um campo numérico não aceita essa possibilidade.
Para efetuar qualquer proposta primeiro e necessário entender/conhecer a base; como seu modelo não há valores fica difícil saber o que e numérico texto ou ambos.
Vou tentar entender sua rotina locais de chamamento da rotina/execução, antes de qq proposta
Contudo vale ressaltar:
Apenas um trecho

Código: Selecionar todos

'apenas data com filtro
If pesquisames.Text = "" And pesquisatipoformacao.Text = "" And Pesquisalocal.Text = "" And _
   pesquisaformacao.Text = "" And pesquisadisciplina.Text = "" And pesquisaformador.Text = "" And _
   pesquisasubunidades.Text = "" And pesquisaformandos.Text = "" Then

    ListView1.ListItems.Clear
    textoDigitado = pesquisadata.Text
    'código que irá filtrar os nomes
    linha = 2
    linhatabela = 1
    While Folha1.Cells(linha, 1).Value <> Empty
        TextoCelula = Folha1.Cells(linha, 2).Value
        'quebra a palavra atual pela esquerda conforme a quantidade de letras digitadas e compara com o texto digitado
        If InStr(UCase(TextoCelula), UCase(textoDigitado)) > 0 Then
            'se a comparação for igual será adicionado no formulario
            Set Item = ListView1.ListItems.Add(Text:=Folha1.Cells(linha, 1))
            Item.SubItems(1) = Folha1.Cells(linha, 2) ' data
            Item.SubItems(2) = Folha1.Cells(linha, 3) ' formacao
            Item.SubItems(3) = Folha1.Cells(linha, 4) ' tipo formacao
            Item.SubItems(4) = Folha1.Cells(linha, 5) ' subunidades
            Item.SubItems(5) = Folha1.Cells(linha, 6) ' formador
            Item.SubItems(6) = Folha1.Cells(linha, 7) ' local
            Item.SubItems(7) = Folha1.Cells(linha, 8) ' mes
            Item.SubItems(8) = Folha1.Cells(linha, 9) 'disciplina
            Item.SubItems(9) = Format(Folha1.Cells(linha, 11).Value, "hh:mm") 'horas
            Item.SubItems(10) = Folha1.Cells(linha, 10) ' formandos
        End If
        linha = linha + 1
    Wend
    Exit Sub
End If

contaregistros = "Número de Registos: " & Me.ListView1.ListItems.Count
...
A informação desse trecho indica "Apenas data", porem a comparação e utilizada a função InStr, que
"Retorna uma Variant (Long) que especifica a posição da primeira ocorrência de uma sequência de caracteres dentro de outra";
como disse anteriormente essa "comparação" não funciona com números; assim e preciso uma forma diferente de comparação ou de pesquisa.
ao final desse trecho mas ainda "dentro" do mesmo há a linha/comando "exit sub"; ou seja sai da rotina sem executar/ler as demais linhas;
asism o comando ==>contaregistros = "Número de Registos: " & Me.ListView1.ListItems.Count logo após o Endif não é executado.
Forneça seu modelo com alguns registros (dados ficticios, mas representativo do constante em cada coluna) bem como da necessidade de cada "filtro/consulta" ocorrer em que momento, Tipo acionar um botão,saida do campo, digitação ....


Reinaldo
Gostou da resposta?:?: :oops: :D :mrgreen:

PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por PauloD » Qua Nov 20, 2019 3:00 pm

Ok vou preencher o ficheiro com dados reais para que me possas ajudar corretamente
Desde ja muito mas muito obrigado



PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por PauloD » Qui Nov 21, 2019 6:06 am

Amigo conforme falámos envio o arquivo com dados preenchidos para que me possas ajudar correctamente
desde já muito obrigado pela disponibilidade e ajuda
Anexos
Arquivo.7z
(115.11 KiB) Baixado 5 vezes



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1271
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por Reinaldo » Qui Nov 21, 2019 9:58 am

Considerando os tipos de dados em seu modelo
Experimente:
Arquivo.zip
(119.57 KiB) Baixado 8 vezes


Reinaldo
Gostou da resposta?:?: :oops: :D :mrgreen:

PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Re: Ajuda em pesquisa/filtro em Listview (Resolvidão)

Mensagem por PauloD » Qui Nov 21, 2019 10:39 am

amigo espectáculo

muito obrigado pela ajuda :)



PauloD
Colaborador
Colaborador
Mensagens: 13
Registrado em: Qua Dez 27, 2017 8:07 am

Re: Ajuda em pesquisa/filtro em Listview (já estou a ficar desesperado)

Mensagem por PauloD » Qui Nov 21, 2019 11:06 am

amigo tive de eliminar esta linha pois não percebo o que lá esta a fazer

Me.Label20.Caption = contaregistros



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder