VB6 - SOMAR LISTVIEW COM CHECKBOX

LUISLPC 03/04/2013 21:52:04
#421481
Boa noite amigos

estou usando a função abaixo para somar uma coluna do listview, funciona perfeitamente, porem preciso adapta-la para somar somente os itens que eu selecionar o check box (do proprio listview)

Citação:

Function ComputeAmount() As String
Dim X As Long
Dim total As Double


For X = 1 To ListView1.ListItems.Count

total = (total + ListView1.ListItems(X).SubItems(2))

Next X
ComputeAmount = Format(total, [Ô]###,##0.00[Ô])

End Function



alguem tem alguma ideia de como fazer?

  • Alterado para compatibilidade correta. (Jonathan Stecker)
  • FILMAN 04/04/2013 01:34:53
    #421488
    Resposta escolhida
    Function ComputeAmount() As String
    Dim X As Long
    Dim total As Double

    For X = 1 To ListView1.ListItems.Count
    if ListView1.ListItems(X)..Checked = True then
    total = (total + ListView1.ListItems(X).SubItems(2))
    End if
    Next X
    ComputeAmount = Format(total, [Ô]###,##0.00[Ô])
    End Function
    LUISLPC 04/04/2013 07:20:34
    #421492
    amigo perfeito funcionou certinho!

    ontem fiz parecido e dava erro, devo ter trocado algo....

    aproveitando, vou precisar atualizar os itens selecionados no banco de dados, como sou iniciante estou pensando ainda em como fazer isto. penso que preciso relacionar os items selecionados em um textbox ou em variaveis.

    tens ideia de como poderia fazer isso? ja tenho uma rotina de update, so preciso adapta-la.

    em resumo é esta:

    Citação:

    con.Execute [Ô]Update TB_EST_PRODUTO Set QTD_ATUAL=[ô][Ô] & nova & [Ô][ô][Ô] & [Ô] Where ID_IDENTIFICADOR=[ô][Ô] & cod & [Ô][ô][Ô]



    obrigado!
    FILMAN 05/04/2013 10:41:55
    #421551
    Private Sub AtualizaItens()
    Dim X As Long
    Dim nova As Integer, cod As Integer

    For X = 1 To ListView1.ListItems.Count
    if ListView1.ListItems(X)..Checked = True then
    cod = ListView1.ListItems(X).SubItems(0)
    nova = ListView1.ListItems(X).SubItems(2)
    con.Execute [Ô]Update TB_EST_PRODUTO Set QTD_ATUAL=[Ô] & nova & [Ô] Where ID_IDENTIFICADOR=[Ô] & cod
    End if
    Next X
    End Function
    LUISLPC 06/04/2013 01:40:56
    #421600
    otimo amigo deu bem certo!

    so pra finalizar estou tentando fazer uma validação pra ver se nenhum checkbox do listview foi selecionado, mas nao esta dando certo, alguem tem alguma ideia?

    gera alguns erros de [ô]index of bounds, etc[ô]

    obrigado!
    FILMAN 06/04/2013 03:31:57
    #421601
    Como você esta fazendo isso?
    LUISLPC 06/04/2013 08:49:30
    #421602
    opa

    algo assim:

    Citação:

    If ListView1.ListItems(0).Checked = False Then
    MsgBox [Ô]Nenhum item selecionado![Ô]
    Else
    Call faturapergunta
    End If



    precisava q ele verificasse tipo, se ao menos 1 item nao estiver selecionado gera o msgbox.

    obigado!
    FILMAN 06/04/2013 13:53:41
    #421609
    Private Function VerificaSelecao() As Boolean
    Dim X As Long, bOK As Boolean

    bOK = False
    For X = 1 To ListView1.ListItems.Count
    if ListView1.ListItems(X).Checked = True then
    bOK = True
    End if
    Next X
    End Function


    [ô]Para chamar a função faça assim
    if Not VerificaSelecao() Then
    MsgBox [Ô]Nenhum item selecionado![Ô]
    End if
    LUISLPC 06/04/2013 17:54:23
    #421613
    nao usei a função e chamar, usei direto na sua funçao ai funcionou, se eu chamar ele entende se foi ou nao selecionado mas gera msgbox de qlq forma...mas deu cert


    vou precisar abusar da sua boa vontade, mas agora percebi um detalhe, o programa que estou fazendo vai marcar as ordens de serviço como faturadas, esta funcionando tudo certo.

    o detalhe eh q o banco de dados nao fui eu que criei, e ele grava id_os repetidos para valores diferentes, existe a função que soma o que foi selecionado (que vcs me ajudaram a faze-la), um timer fica somando tudo o que é selecionado. porem preciso adaptar para que se por exemplo, existirem 2 itens com valores iguais na coluna X, quando eu selecionar o primeiro os outros sao selecionados sozinhos, ai meu timer vai conseguir calcular o valor final da OS.

    é possivel?

    obrigado!
    LUISLPC 07/04/2013 01:19:47
    #421614
    consegui usando a função abaixo:

    Citação:

    Dim x As Long


    For x = 1 To ListView1.ListItems.Count
    If ListView1.ListItems(x).Text = itemselecionado.Text Then
    ListView1.ListItems(x).Checked = True

    End If
    Next x



    ele seleciona todos os itens que sao iguais, porem não me permite desmarca-los

    alguem sabe porque?

    posso ir marcando os proximos ele verifica e marca os iguais, mas nao deixa desmarcar nenhum :/
    Tópico encerrado , respostas não são mais permitidas