LISTCOUNT - CONTAR QUANTOS ITEMS DO TIPO X EXISTEM

USUARIO.EXCLUIDOS 29/12/2004 23:46:08
#57723
Viva pessoal,
Tenho uma dúvida (para já): tenho uma listbox onde são adicionados aleatóriamente vários numeros de 0 a 200. A quantidade de items também varia, tanto são adicionados 1 item como 500 items ou mais. Exemplo:
23
45
120
45
23
45
Depois de serem adicionados esses items, eu precisava de criar uma label por cada numero da lista e outra label a indicar o numero de vezes que se repete esse numero, exemplo:
23 - 2
45 - 3
120 - 1
Não me parece complicado, mas tou bloqueado neste problema...alguém me pode ajudar....tanto na contagem dos items como na criação das labels.

Muito obrigado
LCSD 30/12/2004 23:36:30
#57894
Resposta escolhida
Miguel Angelo

Por que adiciona na ListBox se pretende DEPOIS realizar um levantamento?

Eu acredito que o melhor seria adicionar a uma matriz de 2 dimensões, assim você só adicionaria os itens já cadastrados, do contrário não vejo motivo para um ListBox ter itens repetidos.

Se você puder exemplificar e descrever a aplicação ajudará e muito.
[s50]

LCSD 31/12/2004 10:41:56
#57925
Miguel Angelo

Veja bem, tem como resolver de 2 maneiras (na minha ótica) mas seria interessante você postar o que necessita, se precisa ou não de cada ítem ou seja se foram 500 ocorrências (ou registros) sorteados, você necessita pontualmente de cada registro ou só a incidência dos valores?

Por exemplo, você só necessita saber que 51 ocorreu 14 vezes, 01 ocorreu 5 vezes, 9 nenhuma vez, ou precisa saber que 51 ocorreu nas tentativas 8Âê 37Âê 103Âê .......

Definindo isto pode-se traçar se é necessário ou não um Banco de Dados.
[s50]

LCSD 01/01/2005 15:13:09
#58060
Miguel Angelo

Utilizei uma solução parecida com a que postei para o link abaixo:

ORDENAR CLUBES DE FUTEBOL POR PONTOS/SALDO

Você precisará referenciar o ADO 2.8 Library, um CommandButton e um MSHFlexGrid


Private Sub Command1_Click()
ContaOcorrencia 300
End Sub

Public Sub ContaOcorrencia(iVezes As Integer)
Dim i As Integer, rsBusca As Integer, nSorteado As Integer

Dim rsDesconectado As ADODB.Recordset
Set rsDesconectado = New ADODB.Recordset

rsDesconectado.Fields.Append "Ocorrencia", adChar, 20
rsDesconectado.Fields.Append "Vezes", adInteger

rsDesconectado.ActiveConnection = Nothing
rsDesconectado.CursorLocation = adUseClient

rsDesconectado.Open

'----- Inicio o RecordSet com o TOTAL de vezes -----
For i = 0 To iVezes - 1
rsDesconectado.AddNew
rsDesconectado("Ocorrencia").Value = i
rsDesconectado("Vezes").Value = 0
Next
rsDesconectado.MoveFirst

'-------- Gera os números "aleatoriamente" ---------
For i = 0 To iVezes - 1
nSorteado = Int(Rnd(Timer) * iVezes)
rsDesconectado.Find "Ocorrencia = " & nSorteado
rsDesconectado("Vezes").Value = rsDesconectado("Vezes").Value + 1
rsDesconectado.MoveFirst
Next

rsDesconectado.Sort = ("Vezes desc,Ocorrencia desc")

Set MSHFlexGrid1.DataSource = rsDesconectado
rsDesconectado.Close
Set rsDesconectado = Nothing

End Sub



Aqui nos testes funcionou, pode utilizar qualquer outro mecanismo para obter o Randà'mico, mas a idéia é esta.

Teste e veja se funciona corretamente
[s50]

Tópico encerrado , respostas não são mais permitidas