CRIAR CONTADOR DE REGISTROS NO LISTVIEW

MILTONSILVA94 31/07/2015 11:11:49
#449429
Preciso saber como criar um campo que retorne os dados de um listview na pesquisa, exemplo: se ele retorna 70 registros na pesquisa, gostaria de criar um campo [ô]lbl[ô] que apresentasse mostrasse a quantidade retornada.
Abaixo segue meu código da rotina de pesquisar:

Private Sub RotinaPesquisar()
Dim lsql As String
Dim lTBPerfis As Recordset
Dim lItem As ListItem

lsql = [Ô]SELECT * FROM Perfis [Ô]

[ô]Para o cursor ir depois de trazer os resultados da pesquisa ao campo
lvwLista.SetFocus

[ô]If para fazer a consulta pelos parâmetros informados na consulta
If Trim(cboDescricaoPerfil.Text) <> [Ô][Ô] Then
lsql = lsql & [Ô] WHERE descricao_perfil like [ô][Ô] & Trim(cboDescricaoPerfil.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] ORDER BY id_perfil ASC[Ô]
End If

Set lTBPerfis = gBDSalao.OpenRecordset(lsql, dbOpenSnapshot)

If lTBPerfis.EOF Then
[ô]MsgBox [Ô]Nenhum perfil foi encontrado com os parâmetros informados![Ô], vbCritical
frmMensagemDeErroAoPesquisar.Show vbModal

[ô]Limpar o campo do ListView
lvwLista.ListItems.Clear

Exit Sub
End If

lvwLista.ListItems.Clear

Do While lTBPerfis.EOF = False

Set lItem = lvwLista.ListItems.Add

lItem.Text = lTBPerfis.Fields([Ô]id_perfil[Ô]).Value
lItem.SubItems(1) = lTBPerfis.Fields([Ô]data_sistema[Ô]).Value
lItem.SubItems(2) = lTBPerfis.Fields([Ô]descricao_perfil[Ô]).Value
lItem.SubItems(3) = lTBPerfis.Fields([Ô]atualizado_por[Ô]).Value
lItem.SubItems(4) = lTBPerfis.Fields([Ô]ultima_atualizacao[Ô]).Value

cboDescricaoPerfil.ListIndex = -1

lTBPerfis.MoveNext
Loop

End Sub
TUNUSAT 31/07/2015 11:14:36
#449430
MILTONSILVA94,

Pergunta!
Ao invés de usar o [Ô]listview[Ô], você não pode usar a recordset (lTBPerfis) para ver quantos registros retornaram?

[][ô]s,
Tunusat.
MILTONSILVA94 31/07/2015 13:10:55
#449436
Quero saber o que preciso acrescentar de código para incluir essa nova rotina que quero implementar.
TUNUSAT 31/07/2015 14:20:49
#449438
MILTONSILVA94,

Seria assim , por exemplo:

Dim intTotal As Integer

intTotal = lTBPerfis.RecordCount


Veja aqui:

======================================================
Filter and RecordCount Properties Example (VB)
https://msdn.microsoft.com/en-us/library/windows/desktop/ms681465(v=vs.85).aspx
======================================================

Veja também:
======================================================
Using DAO (Data Access Objects) Code
http://www.vb6.us/tutorials/using-dao-data-access-objects-code-tutorial
======================================================
Trabalhando com Recordsets - Alterando e Retornando dados.
http://www.macoratti.net/dao_ado2.htm
======================================================

[][ô]s,
Tunusat.
MILTONSILVA94 06/08/2015 14:30:47
#449671
Montei a rotina abaixo:

Dim lSQLConect As String

gsContador = txtContador.Text
lsql = [Ô]SELECT COUNT(*) From agendamentos[Ô]
txtContador.Text = [Ô]N.: [Ô] & gsContador

Porém, ao invés de me fornecer os nº de registros que me retornou, ele começa a acrescentar [ô]N.:[ô] de acordo com o nº de registros que retornou.
Onde está o erro?
DAMASCENO.CESAR 06/08/2015 22:03:53
#449692
Resposta escolhida
para aproveitar seu codigo, tenta assim:

Private Sub RotinaPesquisar()
Dim lsql As String
Dim lTBPerfis As Recordset

lsql = [Ô]SELECT * FROM Perfis [Ô]


[ô]If para fazer a consulta pelos parâmetros informados na consulta
If Trim(cboDescricaoPerfil.Text) <> [Ô][Ô] Then
lsql = lsql & [Ô] WHERE descricao_perfil like [ô][Ô] & Trim(cboDescricaoPerfil.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] ORDER BY id_perfil ASC[Ô]
End If

Set lTBPerfis = gBDSalao.OpenRecordset(lsql, dbOpenSnapshot)

If lTBPerfis.EOF Then
[ô]MsgBox [Ô]Nenhum perfil foi encontrado com os parâmetros informados![Ô], vbCritical
frmMensagemDeErroAoPesquisar.Show vbModal
Exit Sub
End If
LblContador.Caption = lTBPerfis.recorcount
cboDescricaoPerfil.ListIndex = -1

End Sub
MILTONSILVA94 07/08/2015 12:15:30
#449709
é isso mesmo DAMASCENO, coloquei essa rotina porém ele ficava retornando sempre o valor [ô]1[ô].
Daí ajustei este código para o final da rotina antes de ele fazer o Loop e daí começou a somar corretamente os registros.
Tópico encerrado , respostas não são mais permitidas