• Domingo 22 de Diciembre de 2024, 16:45

Autor Tema:  Ordenar Una Coleccion  (Leído 1889 veces)

lavi

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Ordenar Una Coleccion
« en: Miércoles 19 de Diciembre de 2007, 13:31 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Ordenar Una Coleccion
« Respuesta #1 en: Miércoles 19 de Diciembre de 2007, 19:37 »
0
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

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Ordenar Una Coleccion
« Respuesta #2 en: Jueves 20 de Diciembre de 2007, 19:37 »
0
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...

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Ordenar Una Coleccion
« Respuesta #3 en: Viernes 21 de Diciembre de 2007, 18:53 »
0
El siguiente código es para ordenar un Array de texto, deberás adaptarlo para ordenar la colección.

Código: Text
  1. ' shell sort of an array of strings, fast version
  2. ' lngLenDic es la cantidad de palabras a ordenar (Ubound)
  3. Sub SortArrayDic(ByRef sArray() As String, lngLenDic As Long)
  4.     Dim Value As String
  5.     Dim Index As Long
  6.     Dim index2 As Long
  7.     Dim firstEl As Long
  8.     Dim lastEl As Long
  9.     Dim distance As Long
  10.     Dim numEls As Long
  11.    
  12.     If lngLenDic &#60; 2 Then Exit Sub
  13.     firstEl = 0
  14.     lastEl = lngLenDic
  15.     numEls = lastEl - firstEl + 1
  16.     ' find the best value for distance
  17.     Do
  18.         distance = distance * 3 + 1
  19.     Loop Until distance &#62; numEls
  20.  
  21.     Do
  22.         distance = distance &#092; 3
  23.         For Index = distance + firstEl To lastEl
  24.             Value = sArray(Index)
  25.             index2 = Index
  26.             Do While (sArray(index2 - distance) &#62; Value)
  27.                 sArray(index2) = sArray(index2 - distance)
  28.                 index2 = index2 - distance
  29.                 If index2 - distance &#60; firstEl Then Exit Do
  30.             Loop
  31.             sArray(index2) = Value
  32.         Next
  33.     Loop Until distance = 1
  34.  
  35. End Sub
  36.  
:comp: