ORDANIZAR DADOS DE ARRAYS
Boa noite turma,
Alguém poderia me dar uma força nesse código? Eu queria organizar as linhas conforme a ordem da coluna que contem o X1, X2, X3, X4. Exemplo:
6+5 X1 %%C76.23 685
3 X2 %%C16 678
2 X3 %%C8 678
3 X4 %%C10 456
87 X5 %%C8 c/67 DADOS (245a2345)
89 X6 %%C16 c/87 DADOS (89768aHHH)
80 X7 %%C16 789
12 X8 %%C16 c/10 456
34 X9 %%C12.5 c/20 768
67 X10 %%C6.3 c/65 160[Ô]
56 X11 %%C8 c/34 DADOS (XXa3453)
12 X12 %%C8 c/57 678
Private Sub Form_Load()
Dim Array1(11) As String
Dim Count As Integer
Dim Cont As Integer
Dim Quantidade As String
Dim Modelo As String
Dim Diametro As String
Dim Espacamento As String
Dim Comprimento As String
Dim ValorMedia As String
Dim strString As Variant
Dim i As Integer
Array1(0) = [Ô]6+5 X1 %%C76.23 685[Ô]
Array1(1) = [Ô]3 X2 %%C16 678[Ô]
Array1(2) = [Ô]3 X4 %%C10 456[Ô]
Array1(3) = [Ô]2 X3 %%C8 678[Ô]
Array1(4) = [Ô]12 X8 %%C16 c/10 456[Ô]
Array1(5) = [Ô]34 X9 %%C12.5 c/20 768[Ô]
Array1(6) = [Ô]56 X11 %%C8 c/34 DADOS (XXa3453)[Ô]
Array1(7) = [Ô]67 X10 %%C6.3 c/65 160[Ô]
Array1(8) = [Ô]87 X5 %%C8 c/67 DADOS (245a2345)[Ô]
Array1(9) = [Ô]89 X6 %%C16 c/87 DADOS (89768aHHH)[Ô]
Array1(10) = [Ô]80 X7 %%C16 789[Ô]
Array1(11) = [Ô]12 X12 %%C8 c/57 678[Ô]
Na caixa de diálogo eu coloquei a coluna com os [Ô]X[Ô] para aparecer na primeira posição, quero listar assim, mas começando do X1, X2, X3 e assim por diante. Segue o meu código:
For Count = LBound(Array1) To UBound(Array1)
If InStr(1, Array1(Count), [Ô]%%[Ô]) > 0 Then
strString = Split(Array1(Count), [Ô] [Ô])
For i = LBound(strString) To UBound(strString)
If i = 0 Then
Quantidade = strString(0)
ElseIf i = 1 Then
Modelo = strString(1)
ElseIf i = 2 Then
Diametro = strString(2)
ElseIf i = 3 Then
Espacamento = strString(3)
ElseIf i = 4 Then
Comprimento = strString(4)
ElseIf i = 5 Then
ValorMedia = strString(5)
End If
Next i
Msgbox Modelo & [Ô];[Ô] & Quantidade & [Ô];[Ô] & Diametro & [Ô];[Ô] & Espacamento & [Ô];[Ô] & Comprimento & [Ô];[Ô] & ValorMedia
Cont = Cont + 1
End If
Next Count
End Sub
Alguém poderia me dar uma força nesse código? Eu queria organizar as linhas conforme a ordem da coluna que contem o X1, X2, X3, X4. Exemplo:
6+5 X1 %%C76.23 685
3 X2 %%C16 678
2 X3 %%C8 678
3 X4 %%C10 456
87 X5 %%C8 c/67 DADOS (245a2345)
89 X6 %%C16 c/87 DADOS (89768aHHH)
80 X7 %%C16 789
12 X8 %%C16 c/10 456
34 X9 %%C12.5 c/20 768
67 X10 %%C6.3 c/65 160[Ô]
56 X11 %%C8 c/34 DADOS (XXa3453)
12 X12 %%C8 c/57 678
Private Sub Form_Load()
Dim Array1(11) As String
Dim Count As Integer
Dim Cont As Integer
Dim Quantidade As String
Dim Modelo As String
Dim Diametro As String
Dim Espacamento As String
Dim Comprimento As String
Dim ValorMedia As String
Dim strString As Variant
Dim i As Integer
Array1(0) = [Ô]6+5 X1 %%C76.23 685[Ô]
Array1(1) = [Ô]3 X2 %%C16 678[Ô]
Array1(2) = [Ô]3 X4 %%C10 456[Ô]
Array1(3) = [Ô]2 X3 %%C8 678[Ô]
Array1(4) = [Ô]12 X8 %%C16 c/10 456[Ô]
Array1(5) = [Ô]34 X9 %%C12.5 c/20 768[Ô]
Array1(6) = [Ô]56 X11 %%C8 c/34 DADOS (XXa3453)[Ô]
Array1(7) = [Ô]67 X10 %%C6.3 c/65 160[Ô]
Array1(8) = [Ô]87 X5 %%C8 c/67 DADOS (245a2345)[Ô]
Array1(9) = [Ô]89 X6 %%C16 c/87 DADOS (89768aHHH)[Ô]
Array1(10) = [Ô]80 X7 %%C16 789[Ô]
Array1(11) = [Ô]12 X12 %%C8 c/57 678[Ô]
Na caixa de diálogo eu coloquei a coluna com os [Ô]X[Ô] para aparecer na primeira posição, quero listar assim, mas começando do X1, X2, X3 e assim por diante. Segue o meu código:
For Count = LBound(Array1) To UBound(Array1)
If InStr(1, Array1(Count), [Ô]%%[Ô]) > 0 Then
strString = Split(Array1(Count), [Ô] [Ô])
For i = LBound(strString) To UBound(strString)
If i = 0 Then
Quantidade = strString(0)
ElseIf i = 1 Then
Modelo = strString(1)
ElseIf i = 2 Then
Diametro = strString(2)
ElseIf i = 3 Then
Espacamento = strString(3)
ElseIf i = 4 Then
Comprimento = strString(4)
ElseIf i = 5 Then
ValorMedia = strString(5)
End If
Next i
Msgbox Modelo & [Ô];[Ô] & Quantidade & [Ô];[Ô] & Diametro & [Ô];[Ô] & Espacamento & [Ô];[Ô] & Comprimento & [Ô];[Ô] & ValorMedia
Cont = Cont + 1
End If
Next Count
End Sub
KELLY,
Eu tenho um exemplo que acabei de passar uma parte para uma outra pergunta aqui no fórum ...
... vou passar a parte de ordenação que fiz para você ver, caso tenha problema eu posso postar o código-fonte completo se você quiser ver.
Funciona assim ... tem uma Array com um monte de frutas e duas listViews: - Uma que é uma cópia da Array e a Outra que é a Array depois de ordenada.
O segredo da ordenação da Array está nos Dois [Ô]For ... To ... Next[Ô] concatenados.
[][ô]s,
Tunusat.
Eu tenho um exemplo que acabei de passar uma parte para uma outra pergunta aqui no fórum ...
... vou passar a parte de ordenação que fiz para você ver, caso tenha problema eu posso postar o código-fonte completo se você quiser ver.
Funciona assim ... tem uma Array com um monte de frutas e duas listViews: - Uma que é uma cópia da Array e a Outra que é a Array depois de ordenada.
O segredo da ordenação da Array está nos Dois [Ô]For ... To ... Next[Ô] concatenados.
Private Sub Form_Load()
Dim strHorti As String
Dim x As Integer
Dim y As Integer
arrHorti(0).Nome = [Ô]Uva[Ô]
arrHorti(0).Tipo = [Ô]F[Ô]
arrHorti(1).Nome = [Ô]Laranja[Ô]
arrHorti(1).Tipo = [Ô]F[Ô]
arrHorti(2).Nome = [Ô]Cenoura[Ô]
arrHorti(2).Tipo = [Ô]L[Ô]
arrHorti(3).Nome = [Ô]Agrião[Ô]
arrHorti(3).Tipo = [Ô]V[Ô]
arrHorti(4).Nome = [Ô]Rúcula[Ô]
arrHorti(4).Tipo = [Ô]V[Ô]
arrHorti(5).Nome = [Ô]Pera[Ô]
arrHorti(5).Tipo = [Ô]F[Ô]
arrHorti(6).Nome = [Ô]Chuchu[Ô]
arrHorti(6).Tipo = [Ô]L[Ô]
arrHorti(7).Nome = [Ô]Alface[Ô]
arrHorti(7).Tipo = [Ô]V[Ô]
arrHorti(8).Nome = [Ô]Mostarda[Ô]
arrHorti(8).Tipo = [Ô]V[Ô]
arrHorti(9).Nome = [Ô]Batata[Ô]
arrHorti(9).Tipo = [Ô]L[Ô]
arrHorti(10).Nome = [Ô]Berijela[Ô]
arrHorti(10).Tipo = [Ô]L[Ô]
arrHorti(11).Nome = [Ô]Brócolis[Ô]
arrHorti(11).Tipo = [Ô]V[Ô]
arrHorti(12).Nome = [Ô]Banana[Ô]
arrHorti(12).Tipo = [Ô]F[Ô]
arrHorti(13).Nome = [Ô]Abóbora[Ô]
arrHorti(13).Tipo = [Ô]L[Ô]
arrHorti(14).Nome = [Ô]Giló[Ô]
arrHorti(14).Tipo = [Ô]L[Ô]
arrHorti(15).Nome = [Ô]Maçã[Ô]
arrHorti(15).Tipo = [Ô]F[Ô]
[ô] -----------------------------------
For x = 0 To UBound(arrHorti)
lstHortiDesordenadas.AddItem arrHorti(x).Tipo & [Ô] - [Ô] & arrHorti(x).Nome
Next x
[ô] -----------------------------------
For x = 0 To lstHortiDesordenadas.ListCount - 1
For y = 0 To lstHortiDesordenadas.ListCount - 1
If arrHorti(x).Nome < arrHorti(y).Nome Then
strHorti = arrHorti(y).Nome
arrHorti(y).Nome = arrHorti(x).Nome
arrHorti(x).Nome = strHorti
End If
Next y
Next x
For x = 0 To lstHortiDesordenadas.ListCount - 1
For y = 0 To lstHortiDesordenadas.ListCount - 1
If arrHorti(x).Tipo < arrHorti(y).Tipo Then
strHorti = arrHorti(y).Tipo
arrHorti(y).Tipo = arrHorti(x).Tipo
arrHorti(x).Tipo = strHorti
End If
Next y
Next x
lstHortiOrdenadas.Clear
For x = 0 To lstHortiDesordenadas.ListCount - 1
lstHortiOrdenadas.AddItem arrHorti(x).Tipo & [Ô] - [Ô] & arrHorti(x).Nome
Next x
End Sub
[][ô]s,
Tunusat.
Como eu faço para aplicar no meu código que pode possuir até 5 colunas?
KELLY,
Se você está trabalhando só com Array então terá que [Ô]manobrar[Ô].
Você toma como base a coluna que quer ordenar e depois as outras colunas tem que seguir o modelo.
Exemplo:
A linha 9 passará a ser a linha 1, então todas as arrays que você está usando precisam seguir o mesmo caminho.
Outra forma de fazer é usando algo para te ajudar.
Por exemplo uma RecordSet Desconectada.
Você pode colocar tudo dentro da RecordSet Desconectada e depois fazer uma ordenação dela.
Ou uma ListView (Microsoft Common Control 6.0 (SP6) - MSCOMCTL.OCX
[][ô]s,
Tunusat.
Se você está trabalhando só com Array então terá que [Ô]manobrar[Ô].
Você toma como base a coluna que quer ordenar e depois as outras colunas tem que seguir o modelo.
Exemplo:
A linha 9 passará a ser a linha 1, então todas as arrays que você está usando precisam seguir o mesmo caminho.
Outra forma de fazer é usando algo para te ajudar.
Por exemplo uma RecordSet Desconectada.
Você pode colocar tudo dentro da RecordSet Desconectada e depois fazer uma ordenação dela.
Ou uma ListView (Microsoft Common Control 6.0 (SP6) - MSCOMCTL.OCX
[][ô]s,
Tunusat.
Obrigada Tunusat!!
Tópico encerrado , respostas não são mais permitidas