Programación General > Visual Basic 6.0 e inferiores

 Ordenar Una Coleccion

(1/1)

lavi:
Holas... a ver si alguien puede ayudarme.. tengo que pasar como parametro una coleccion y ordenar sus items por apellidos; y no puedo hacerlo desde la consulta sql con el sort sino con un algoritmo..  si alguien tiene algún código sobre esto se lo agradeceria...

gracias.

cpmario:
En Planet Source Code (PSC) hay muchos algoritmos para hacer arreglos (sort) de palabras, por ejemplo:

http://www.planet-source-code.com/vb/scrip...=67253&lngWId=1

 :comp:

lavi:
Gracias, busqué allí y encontré unos algoritmos pero lo que tengo como base es este cód; que claro no me lo ordena... como puedo hacer para que lo ordene por nombre...


--- Citar ---

Public Function REORDENAR(DESORDENADA As Collection) As Collection
Set REORDENAR = New Collection
        Dim cl As New cAfiliado1
        Dim i As Integer
        For i = 0 To DESORDENADA.Count - 1
            For Each cl In DESORDENADA
                If cl.Nombre < DESORDENADA.Item(i).Nombre Then
                    REORDENAR.Add cl
                    Exit For
                End If
            Next
        Next
End Function

a ver si alguien me tira una idea...
gracias...
--- Fin de la cita ---

cpmario:
El siguiente código es para ordenar un Array de texto, deberás adaptarlo para ordenar la colección.


--- Código: Text ---' shell sort of an array of strings, fast version' lngLenDic es la cantidad de palabras a ordenar (Ubound)Sub SortArrayDic(ByRef sArray() As String, lngLenDic As Long)    Dim Value As String    Dim Index As Long    Dim index2 As Long    Dim firstEl As Long    Dim lastEl As Long    Dim distance As Long    Dim numEls As Long        If lngLenDic &#60; 2 Then Exit Sub    firstEl = 0    lastEl = lngLenDic    numEls = lastEl - firstEl + 1    ' find the best value for distance    Do        distance = distance * 3 + 1    Loop Until distance &#62; numEls     Do        distance = distance &#092; 3        For Index = distance + firstEl To lastEl            Value = sArray(Index)            index2 = Index            Do While (sArray(index2 - distance) &#62; Value)                sArray(index2) = sArray(index2 - distance)                index2 = index2 - distance                If index2 - distance &#60; firstEl Then Exit Do            Loop            sArray(index2) = Value        Next    Loop Until distance = 1 End Sub  :comp:

Navegación

[0] Índice de Mensajes

Ir a la versión completa