CONTAR LINHAS DO LISTVIEW
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
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
O que você quer não é a quantidade de linhas e sim o número da linha. Como está preenchendo seu listview?
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
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
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
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
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
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
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
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
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
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
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
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