MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

2 participantes

    [Resolvido]Filtro dentro do listvew

    avatar
    crovador
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 03/04/2018

    [Resolvido]Filtro dentro do listvew Empty [Resolvido]Filtro dentro do listvew

    Mensagem  crovador 12/7/2021, 00:31

    Olá amigos, estou precisando de uma ajuda, gostaria de saber se tem como filtrar item dentro do listview, ou seja, sem pegar de algum banco de dados, no próprio listview vba.

    Aguardo ajuda amigos
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3054
    Registrado : 22/11/2016

    [Resolvido]Filtro dentro do listvew Empty Re: [Resolvido]Filtro dentro do listvew

    Mensagem  DamascenoJr. 12/7/2021, 01:49

    De onde viriam os dados?


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    crovador
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 03/04/2018

    [Resolvido]Filtro dentro do listvew Empty Filtro dentro do listvew

    Mensagem  crovador 12/7/2021, 23:24

    Os dados vem do banco access, mas o filtro teria que ser na listview, ou seja, filtrar os dados da listview e não do banco.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3054
    Registrado : 22/11/2016

    [Resolvido]Filtro dentro do listvew Empty Re: [Resolvido]Filtro dentro do listvew

    Mensagem  DamascenoJr. 12/7/2021, 23:33

    Como você pensa em alimentar a listview?


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    crovador
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 03/04/2018

    [Resolvido]Filtro dentro do listvew Empty Filtro dentro do listvew

    Mensagem  crovador 12/7/2021, 23:45

    Ela está alimentada normal pelo banco access, posso colocar os códigos aqui para vc ver, mas preciso filtrar os dados que já estão na listview.

    Segue os códigos que alimentam a listview...

    Private Sub UserForm_Initialize()

    EMISSAO.Enabled = False
    VENCIMENTO.Enabled = False

    Call RemoveBotao(Me)

    Me.ListView1.ListItems.Clear
    PLACA.Clear

    sql = "SELECT * FROM TB_FROTA"
    sql = sql & " ORDER BY TB_FROTA.PLACA_VEICULO;"

    Call conexao_consulta

    Do Until (consulta.EOF)
    PLACA.AddItem consulta!PLACA_VEICULO
    consulta.MoveNext
    Loop
    '--------------------------------------------------------------

    With ListView1
    .Gridlines = True
    .View = lvwReport
    .FullRowSelect = True
    .LabelEdit = lvwManual
    .CheckBoxes = True

    .ColumnHeaders.Add Text:=" ", Width:=14 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="PLACA", Width:=50 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="NOME/CNPJ", Width:=185 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="CONTATO", Width:=90 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="TEL. FIXO", Width:=70 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="TEL.CELULAR", Width:=70 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="EMISSÃO", Width:=55 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="VENCIMENTO", Width:=60 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="Nº DIAS À VENCER", Width:=150 ', Alignment:=fmAlignmentRight
    .ColumnHeaders.Add Text:="SITUAÇÃO", Width:=55 ', Alignment:=fmAlignmentRight

    End With

    'Call atualizar
    Call CommandButton1_Click
    End Sub
    avatar
    crovador
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 03/04/2018

    [Resolvido]Filtro dentro do listvew Empty Filtro dentro do listvew

    Mensagem  crovador 12/7/2021, 23:50

    Sub atualizar()
    On Error Resume Next
    Dim Item As ListItem

    ListView1.ListItems.Clear

    sql = "SELECT * FROM TB_FROTA"
    sql = sql & " ORDER BY TB_FROTA.RAZAO_SOCIAL;"

    Call conexao_consulta

    Do Until (consulta.EOF)

    Set Item = ListView1.ListItems.Add(Text:=consulta!código)
    Item.SubItems(1) = consulta!PLACA_VEICULO
    Item.SubItems(2) = consulta!RAZAO_SOCIAL
    Item.SubItems(3) = consulta!CONTATO
    Item.SubItems(4) = consulta!TEL_FIXO
    Item.SubItems(5) = consulta!TEL_CELULAR
    Item.SubItems(6) = consulta!DATA_EMISSAO
    Item.SubItems(7) = consulta!DATA_VENCIMENTO

    consulta.MoveNext

    Loop

    Select Case ListView1.ListItems.Count
    Case 0
    label_registro.Caption = "Nenhum Registro Encontrado."
    Case 1
    label_registro.Caption = ListView1.ListItems.Count & " Registro(s)"
    Case Is > 1
    label_registro.Caption = ListView1.ListItems.Count & " Registro(s)"

    End Select

    End Sub
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3054
    Registrado : 22/11/2016

    [Resolvido]Filtro dentro do listvew Empty Re: [Resolvido]Filtro dentro do listvew

    Mensagem  DamascenoJr. 12/7/2021, 23:58

    Basta adicionar a cláusula Where no comando SQL.

    sql = "SELECT * FROM TB_FROTA WHERE SEUFILTRO = VALORFILTRAR "
    sql = sql & " ORDER BY TB_FROTA.RAZAO_SOCIAL;"

    Não uso listviews, e não sei se esse tipo de controle tem um método próprio de filtragem, mas se não tiver, penso que a outra maneira possível seria passando o recordset trazido em "consulta" para uma array, e filtrar os elementos a partir para que possam alimentar o listview. Certamente isso consome memória e causa lentidão a depender da quantidade de registros trazidos.

    Seu banco é separado em back-end e front-end? Trabalha desvinculado? Se sim, já considerou tabelas temporárias?


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    crovador
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 03/04/2018

    [Resolvido]Filtro dentro do listvew Empty Filtro dentro do listvew

    Mensagem  crovador 14/7/2021, 00:08

    Private Sub BTN_VENCIDOS_CLIENTES_Click()
    'Filtrar por uma coluna retirando o registro do listview

    If NOMECNPJ = Empty Then
    MsgBox "Nenhum Cliente Foi Pesquisado!", 0 + vbInformation, "Aviso"
    NOMECNPJ.SetFocus
    Exit Sub
    End If

    Call CommandButton1_Click

    Dim Tmp As Integer, i As Integer

    Tmp = ListView1.ListItems.Count 'Troque para o nome de seu formulario
    For i = 1 To Tmp
    With ListView1
    If i > Tmp Then GoTo saida
    If .ListItems(i).SubItems(9) = "EM DIA" Then 'Supondo que o valor a ser filtrado seja a coluna 9
    ListView1.ListItems.Remove i
    i = i - 1
    Tmp = Tmp - 1
    End If
    End With
    Next
    saida:

    For i = 1 To Tmp
    With ListView1
    If i > Tmp Then GoTo saida
    If .ListItems(i).SubItems(9) = "VENCE HOJE" Then 'Supondo que o valor a ser filtrado seja a coluna 9
    ListView1.ListItems.Remove i
    i = i - 1
    Tmp = Tmp - 1
    End If
    End With
    Next
    label_registro.Caption = ListView1.ListItems.Count & " Registro(s)"
    lb_funcao_ativa.Caption = "Filtro: Veículos Vencidos..."

    End Sub
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3054
    Registrado : 22/11/2016

    [Resolvido]Filtro dentro do listvew Empty Re: [Resolvido]Filtro dentro do listvew

    Mensagem  DamascenoJr. 14/7/2021, 00:38

    Por curiosidade da minha parte que não uso listview, é possível remover o filtro e fazer os itens retirados retornarem?


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    crovador
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 03/04/2018

    [Resolvido]Filtro dentro do listvew Empty Filtro dentro do listvew

    Mensagem  crovador 14/7/2021, 23:49

    Sim é possível, qualquer dúvida colo o código para vc...

      Data/hora atual: 18/9/2021, 17:07