CONTAR LINHAS DO LISTVIEW

ALANTB 14/05/2013 17:58:10
#423471
Ai galera,

Como se faz para contar as linhas de um listview?O que preciso é o seguinte, ao puxar os dados do BD, em uma das colunas fosse exibindo a quantidade de linhas como abaixo:


registro nome telefone [ô] o que preciso é a sequência da coluna Registro
------------------------------------
1 Joao 565544
2 Maria 658686
3 Andre 895555
4 Saul 654545
... .... .....

Alan
KERPLUNK 14/05/2013 18:09:06
#423473
O que você quer não é a quantidade de linhas e sim o número da linha. Como está preenchendo seu listview?
ALVAROVB2009 14/05/2013 18:55:05
#423477
Resposta escolhida
ALANTB eu uso dessa forma

lvFuncionarios.ListItems.Count

Com isso faço até um FOR NEXT ex:
Dim I As Integer
For I = 1 To LstBoletos.ListItems.Count
If LstBoletos.ListItems(I).Selected = True Then
If Trim(CodigoSelecionado) = [Ô][Ô] Then
CodigoSelecionado = LstBoletos.ListItems(I).Text
Else
CodigoSelecionado = CodigoSelecionado & [Ô],[Ô] & LstBoletos.ListItems(I).Text
End If
End If
Next
ALANTB 15/05/2013 08:34:32
#423502
Eu carrego o listview assim como esta abaixo. Só não sei como inserir essa rotina de contagem no meio do código, sendo que, o que esta carregando puxa do BD e essa contagem seria por fora...

Sub CarregaListaGeral()

If txtCodViagem.Text = [Ô][Ô] Then Exit Sub

ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
[ô]define a conexão e abre o Recordset com os dados da tabela
With rs
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.CacheSize = 50


.Source = [Ô]SELECT tbCadastro.codPessoa, tbCadastro.nome, tbDestino.descricaoDestino AS Destino, tbParada.descricaoParada AS Parada, tbLista.horaMarcada, tbConfirma.desconfirma AS Confirma [Ô] & _
[Ô]FROM tbConfirma INNER JOIN (tbParada INNER JOIN (tbDestino INNER JOIN (tbCadastro INNER JOIN tbLista ON tbCadastro.codPessoa = tbLista.codPessoa) ON tbDestino.codDestino = tbLista.codDestino) ON tbParada.codParada = tbLista.codParada) ON tbConfirma.codconfirma = tbLista.codConfirma [Ô] & _
[Ô]WHERE tbLista.codViagem=[Ô] & txtCodViagem.Text


Debug.Print
.ActiveConnection = conn
.Open
End With

[ô]Cria o cabeçalho do controle ListView
ListView1.ColumnHeaders.Add , , [Ô]Ordem[Ô], 900, lvwColumnLeft [ô]AQUI QUE PRECISO INSERIR A SEQUÊNCIA
ListView1.ColumnHeaders.Add , , [Ô]Código[Ô], 900, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Nome[Ô], 3450, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Destino[Ô], 2000, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Parada[Ô], 2000, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Hora[Ô], 900, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Confirmado[Ô], 1000, lvwColumnLeft

[ô]Preenche o controle listview com os dados da tabela
Dim i As Integer
For i = 0 To rs.RecordCount - 1
Set LIClientesID = ListView1.ListItems.Add(, [Ô]A[Ô] & rs(0), rs(0))
If Not IsNull(rs(0)) Then
LIClientesID.SubItems(1) = [Ô][Ô] & rs!Nome
LIClientesID.SubItems(2) = [Ô][Ô] & rs!Destino
LIClientesID.SubItems(3) = [Ô][Ô] & rs!Parada
LIClientesID.SubItems(4) = [Ô][Ô] & rs!HoraMarcada
LIClientesID.SubItems(5) = [Ô][Ô] & rs!Confirma


End If
rs.MoveNext
Next i

rs.Close
Set rs = Nothing

End Sub
ALVAROVB2009 15/05/2013 08:51:09
#423505
ALANTB Bom dia

Como eu disse para vc, para vc saber quantas linhas tem no list se vc usar o comando
liclientesid.ListItems.Count
depois que vc preencheu o list, vc vai ter o total, más se vc precisa mesmo fazer a contagem manualmente faz o seguinte

[ô]Preenche o controle listview com os dados da tabela
DIM CONTADOR AS INTEGER
CONTADOR=0
Dim i As Integer
For i = 0 To rs.RecordCount - 1
Set LIClientesID = ListView1.ListItems.Add(, [Ô]A[Ô] & rs(0), rs(0))
If Not IsNull(rs(0)) Then
LIClientesID.SubItems(1) = [Ô][Ô] & rs!Nome
LIClientesID.SubItems(2) = [Ô][Ô] & rs!Destino
LIClientesID.SubItems(3) = [Ô][Ô] & rs!Parada
LIClientesID.SubItems(4) = [Ô][Ô] & rs!HoraMarcada
LIClientesID.SubItems(5) = [Ô][Ô] & rs!Confirma
CONTADOR=CONTADOR + 1
End If
rs.MoveNext
Next i

Deixei em letra maiuscula o que vc precisa fazer, o CONTADOR vai dentro do IF, para vc ter a certeza de contar o que esta indo para o listm ok ?!

Qqer coisa posta ai
FFCOUTO 15/05/2013 09:34:54
#423507
Se eu entendi bem, basta acrescentar a linha em azul no seu código e irá funcionar.


For i = 0 To rs.RecordCount - 1
If Not IsNull(rs(0)) Then
Set LIClientesID = ListView1.ListItems.Add(, [Ô]A[Ô] & rs(0), rs(0))
[txt-color=#0000f0]LIClientesID.Text = LIClientesID.ListItems.Count[/txt-color]
LIClientesID.SubItems(1) = [Ô][Ô] & rs!Nome
LIClientesID.SubItems(2) = [Ô][Ô] & rs!Destino
LIClientesID.SubItems(3) = [Ô][Ô] & rs!Parada
LIClientesID.SubItems(4) = [Ô][Ô] & rs!HoraMarcada
LIClientesID.SubItems(5) = [Ô][Ô] & rs!Confirma
End If
rs.MoveNext
Next i


ALANTB 15/05/2013 11:01:17
#423519
Pessoal, consegui, mas de outra forma. Entretanto gostaria que a ordem de numeros ficasse na primeira coluna, o nome na segunda, o código na terceira, e o resto igual....Acho que é a maneira que o listview écarrega os dados e que o código vem sempre na frente. Mas tem como alterar essa ordem???

ListView1.ColumnHeaders.Add , , [Ô]Código[Ô], 900, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Nome[Ô], 3450, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Destino[Ô], 3050, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Parada[Ô], 2000, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Hora[Ô], 900, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Confirmado[Ô], 1000, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Ordem[Ô], 900, lvwColumnLeft [ô] ADICIONEI ESSA COLUNA

[ô]Preenche o controle listview com os dados da tabela
Dim i As Integer
For i = 0 To rs.RecordCount - 1
Set LIClientesID = ListView1.ListItems.Add(, [Ô]A[Ô] & rs(0), rs(0))

If Not IsNull(rs(0)) Then

LIClientesID.SubItems(1) = [Ô][Ô] & rs!Nome
LIClientesID.SubItems(2) = [Ô][Ô] & rs!Destino
LIClientesID.SubItems(3) = [Ô][Ô] & rs!Parada
LIClientesID.SubItems(4) = [Ô][Ô] & rs!HoraMarcada
LIClientesID.SubItems(5) = [Ô][Ô] & rs!Confirma
LIClientesID.SubItems(6) = ListView1.ListItems.Count[ô] ADICIONEI ESSA LINHA E ESTA FAZENDO A CONTAGEM

End If
rs.MoveNext
Next i
ALVAROVB2009 15/05/2013 11:19:46
#423521
Tem sim, basta mudar a ordem da sua coluna

ListView1.ColumnHeaders.Add , , [Ô]Código[Ô], 900, lvwColumnLeft

ListView1.ColumnHeaders.Add , , [Ô]Ordem[Ô], 900, lvwColumnLeft [ô] Aqui pode ser o contador que te passei

ListView1.ColumnHeaders.Add , , [Ô]Nome[Ô], 3450, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Destino[Ô], 3050, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Parada[Ô], 2000, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Hora[Ô], 900, lvwColumnLeft
ListView1.ColumnHeaders.Add , , [Ô]Confirmado[Ô], 1000, lvwColumnLeft


Dim i As Integer
For i = 0 To rs.RecordCount - 1
Set LIClientesID = ListView1.ListItems.Add(, [Ô]A[Ô] & rs(0), rs(0))
If Not IsNull(rs(0)) Then

LIClientesID.SubItems(1) = ListView1.ListItems.Count[ô]

LIClientesID.SubItems(2) = [Ô][Ô] & rs!Nome
LIClientesID.SubItems(3) = [Ô][Ô] & rs!Destino
LIClientesID.SubItems(4) = [Ô][Ô] & rs!Parada
LIClientesID.SubItems(5) = [Ô][Ô] & rs!HoraMarcada
LIClientesID.SubItems(6) = [Ô][Ô] & rs!Confirma

End If
rs.MoveNext
Next i


é isso, espero poder ter te ajudado
ALANTB 15/05/2013 16:06:10
#423540
ALVAROVB2009, para solucionar meu problema, deixei a coluna [Ô]codigo[Ô], com tamanho zero, ou seja, deixei oculta pois nesse momento do sistema não precisa aparecer e alterei a ordem das colunas conforme acima. Sendo assim, valeu, vou encerrar o tópico.....até breve!!!!!
Tópico encerrado , respostas não são mais permitidas