Página 1 de 1

Checkboxes do listview

Enviado: 12 Mar 2021 às 16:29
por Diego100ges
Pessoal, boa tarde!

To com um dificuldade em um código aqui, gostaria da ajuda de vocês, o código é relativamente simples, quando eu marcar a checkbox do item selecionado o código da um select no banco e me mostra as informações, até ai ok esta rodando, e a segunda parte é quando eu desmarcar essa checkbox eu quero que limpe o listview e de outro select no banco, mas essa parte não está indo kkkk, alias só funciona no ultimo item do listview, nos demais não.

Segue o código
Código: Selecionar todos
Private Sub lista_unidades_ItemCheck(ByVal Item As MSComctlLib.ListItem)
Dim produto As Integer

Call Conecta

cotacao = lbl_ncotacao
For i = 1 To lista_unidades.ListItems.Count

    produto = lista_unidades.ListItems.Item(i)

        If lista_unidades.ListItems.Item(i).Checked = True Then
            lista_ofertas.ListItems.Clear

            Set rs = New ADODB.Recordset
            comando = "Select * from bd_ofertas_cotacoes where Cotacao like '" & cotacao & "' and "
            comando = comando & "Produto like '" & produto & "'"
            rs.Open comando, conexao, 3, 3

            While Not rs.EOF
            Set list = lista_ofertas.ListItems.Add(Text:=rs("Comercializadora"))
            list.SubItems(1) = rs("Preco") & vbNullString
            list.SubItems(2) = rs("Tipo") & vbNullString
            list.SubItems(3) = rs("Validade") & vbNullString
            linhalistbox = linhalistbox + 1
            rs.MoveNext
            Wend
    
            If lista_unidades.ListItems.Item(i).Checked = False Then
                lista_ofertas.ListItems.Clear
    
                Set rs = Nothing
    
                Set rs = New ADODB.Recordset
                comando = "Select Distinct * from bd_ofertas_cotacoes where Cotacao like '" & cotacao & "'"
                rs.Open comando, conexao, 3, 3
    
                While Not rs.EOF
                Set list = lista_ofertas.ListItems.Add(Text:=rs("Comercializadora"))
                list.SubItems(1) = rs("Preco") & vbNullString
                list.SubItems(2) = rs("Tipo") & vbNullString
                list.SubItems(3) = rs("Validade") & vbNullString
                list.SubItems(4) = rs("Vencimento") & vbNullString
                linhalistbox = linhalistbox + 1
                rs.MoveNext
                Wend
            End If

        End If
Next

Call Desconecta
End Sub

Re: Checkboxes do listview

Enviado: 15 Abr 2021 às 19:34
por CursoDeExcelGratis
o que está esquisito no seu codigo é que vc não está usando em nenhum lugar o parâmetro passado no evento itemcheck ( ByVal Item As MSComctlLib.ListItem )

esse parametro representa justamente o item clicado / desclicado , então no lugar de um looping, que passa por todos os itens, vc deveria pegar direto o item clicado, passado no parâmetro, não seria isso ?