NUMEROS DISTINTOS

SIDSIL 16/12/2015 11:29:18
#455230
Bom Dia


Tenho uma lista de numeros que podem ou nao se repetir.Preciso selecionar cada numero apenas uma unica vez.

Alguem teria uma rotina para isso?

Exemplo (1,1,1,2,3,3,1,2,4,5,5,5,6,7,8,1,2,4,5,6,5,8,9)


Obrigado a todos.
ALVAROVB2009 16/12/2015 11:33:30
#455231
Select distinct(camponumero) from suatabela

Dessa forma ele puxa apenas 1vez o numero, não importa quantas vezes ele exista no banco
SIDSIL 16/12/2015 12:24:30
#455233
Muito obrigado por sua ajuda Alvaro.



Na verdade eu exibo esses dados em um ListView e os mesmos ja sao resultado de um Select anterior, portanto eu tenho que varrer o ListView em busca de todos os numeros (ID's) para pegar cada um apenas uma vez.


Um Abraço

Sidnei
ALVAROVB2009 16/12/2015 12:59:42
#455234
Certo

Nesse caso vc pode criar uma variável, guarda o primeiro e vai comparando linha a linha

Ex
Dim Codigo as integer
Dim CodigoGuardado as string
Codigo = primeiro codigo da lista dos seus itens
codigoguardado = [Ô][Ô]
For I = 1 To list.ListItems.Count
If Codigo <> list.ListItems(I).ListSubItems(Campodoseucodigo) Then
codigoguardado= codigoguardado & [Ô],[Ô] & list.ListItems(I).ListSubItems(Campodoseucodigo)
Codigo = list.ListItems(I).ListSubItems(Campodoseucodigo)
End If
Next

msgbox codigoguardado

Seria algo assim, dessa forma ele guarda todos os códigos distintos
JABA 16/12/2015 15:36:32
#455240
Dim v() As Integer
Dim vetor() As Integer

ReDim vetor(22)

vetor(0) = 1
vetor(1) = 1
vetor(2) = 1
vetor(3) = 2
vetor(4) = 3
vetor(5) = 3
vetor(6) = 1
vetor(7) = 2
vetor(8) = 4
vetor(9) = 5
vetor(10) = 5
vetor(11) = 5
vetor(12) = 6
vetor(13) = 7
vetor(14) = 8
vetor(15) = 1
vetor(16) = 2
vetor(17) = 4
vetor(18) = 5
vetor(19) = 6
vetor(20) = 5
vetor(21) = 8
vetor(22) = 9

Dim x As Integer
Dim y As Integer
Dim z As Integer

For x = 0 To UBound(vetor)
For y = x + 1 To UBound(vetor)
If vetor(y) < vetor(x) Then
z = vetor(x)
vetor(x) = vetor(y)
vetor(y) = z
End If
Next
Next

y = 1
z = vetor(0)

ReDim v(1)

v(0) = z

For x = 1 To UBound(vetor)
If vetor(x) > z Then
v(y) = vetor(x)
z = vetor(x)
y = y + 1
ReDim Preserve v(y)
End If
Next

For x = 0 To UBound(v) - 1
MsgBox v(x)
Next

SIDSIL 16/12/2015 16:28:46
#455244
Muito obrigado Jaba

Fiz um teste rapido e realmente foram exibidos os numeros apenas uma vez.

A noite colocarei esse codigo dentro do meu projeto e testarei.


Muito obrigado e um Abraço
ALVAROVB2009 16/12/2015 17:24:46
#455245
SIDSIL fiz um ajuste no meu exemplo
SIDSIL 16/12/2015 17:33:44
#455247
Que bom.

O que voce mudou?
JABA 16/12/2015 17:37:55
#455248
Resposta escolhida
Alvaro, acho que sua solução não bate com o que ele precisa. Por isso que achei necessário dar um outra solução.

vlw
ALVAROVB2009 16/12/2015 17:50:55
#455249
SIDSIL

Dim Codigo as integer
Dim CodigoGuardado as string
Codigo = primeiro codigo da lista dos seus itens
codigoguardado = [Ô][Ô]
For I = 1 To list.ListItems.Count
If Codigo <> list.ListItems(I).ListSubItems(Campodoseucodigo) Then
Coloquei essa linha
codigoguardado= codigoguardado & [Ô],[Ô] & list.ListItems(I).ListSubItems(Campodoseucodigo)
Codigo = list.ListItems(I).ListSubItems(Campodoseucodigo)
End If
Next

msgbox codigoguardado


Jaba ela deu apenas um exemplo dos números, más o que ela quer mesmo, é pegar os dados distintos da listview, já que ela carrega o list com os dados do sql
Não esta errado, apresenta o mesmo resultado

Da forma que eu coloquei, ela vai verificando linha a linha do list, adicionando em uma variável e depois exibe todos de uma vez

A diferença é que do meu jeito exibe tudo de uma vez , podemos se quiser fazer um tratamento e exibir um de cada vez e do seu jeito exibe um de cada vez

Depois do que ela precisa os dois casos servem
SIDSIL 16/12/2015 18:25:32
#455251
Boa Noite Jaba

Na verdade eu testei e é isso o que eu quero.Dentro de uma quantidade de numeros,repetidos ou nao, eu preciso pega-los apenas uma vez.
Mais tarde irei testar dentro do meu sistema.

Um Abraço
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas