| |||
Function SortArray(arreglo) For j=UBound(arreglo) to 0 step - 1 For i=0 to UBound(arreglo) - 1 elemento = arreglo(i) elementoMasUno = arreglo(i + 1) if arreglo(i) > arreglo(i + 1) then aux = arreglo(i) arreglo(i) = arreglo(i + 1) arreglo(i + 1) = aux end if next next SortArray = arreglo End function Este se llama el método de la burbuja, te ordena de menor a mayor los elementos que tenés en un array. Lo que sí, es extremadamente lento. Con mil elementos en el array hasta en local te demora un par de segundos. Podés averiguar por el algoritmo QuickSort, que si bien es más complejo de entender, es mucho más eficaz que este. Espero que te sirva!. Suerte!.
__________________ Add, never Remove |
| ||||
claro pero es solo para una de las fuentes de las que pueden provenir los datos... tambien pueden venir de varibles sueltas... o de archivos de texto... pero = se agradece la funcion... saludos
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |
| |||
Podrias hacer un insert (desde todos los orígenes que decís que pueden provenir loos datos) en un archivo temporal , y despues hacer un select * from tabla_temporal order by campo_XXX Eso si, no olvides borrar la tabla todas las veces. Slds. Edum |
| ||||
Me parece que aunado a lo que ya te han aconsejado, lo importante es definir que estructura de datos es la que quieres ordenar, no es lo mismo ordenar un arreglo, que una tabla por ejemplo, entiendo el concepto de enviar parametros de donde sea a una funcion para que los ordene, pero esa funcion necesitara recibir dichos parametros en un formato establecido. Salu2,
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Cita: Y agrego que ni siquiera hace falta crear un tabla temporal sino que lo podrías almacenar en un recordset "volátil" (por llamarlo de alguna manera). Después si me acuerdo pongo un ejemplo
Iniciado por edumferreyra no lo dije, pero se supone que el archivo temporal es la tabla de alguna base de datos que estés usando (o al menos de un access que lo unico que tenga es tu tabla temporal )
__________________ ...___... |
| ||||
Bueno, el ejemplo. Puede tener errores porque lo tuve que editar para quitarle HTML innecesario, pero es la idea:
Código:
Lo que hago es leer los archivos de una carpeta y colocar en un récordset cada atributo de estos, para poder ordenarlos de manera más fáciil que por el método de la burbuja (y más efectivo, puesto que ese algoritmo o método siempre ordena de manera textual, fechas incluidas) <% CONST adFldIsNullable = &H00000020 CONST adVarChar = 200 CONST adInteger = 3 CONST adDate = 7 CONST adOpenDynamic = 2 CONST adUseClient = 3 Set FSO = Server.CreateObject("Scripting.FileSystemObject") Set folder = fso.getFolder(Server.MapPath("carpeta")) Set rs = Server.CreateObject("ADODB.Recordset") With rs .CursorLocation = adUseClient .CursorType = adOpenDynamic .Fields.Append "Nombre", adVarChar, 255, adFldIsNullable .Fields.Append "Extension", adVarChar, 255, adFldIsNullable .Fields.Append "Peso", adInteger, 255, adFldIsNullable .Fields.Append "Modificado", adDate, 32, adFldIsNullable .Fields.Append "RutaArchivo", adVarChar, 255, adFldIsNullable .open for each file in folder.Files Archivo = file.Name arrArchivo = Split(Archivo, ".") Extension = arrArchivo(UBound(arrArchivo)) Peso = file.Size .AddNew .Fields("Nombre") = file.Name .Fields("Extension") = Extension .Fields("Peso") = Peso .Fields("Modificado") = file.dateLastModified .Fields("RutaArchivo") = file.Path .update next Orden = Request.QueryString("Orden") Select CASE Orden Case "" OrdenarPor = "Nombre ASC" Case "NomA" OrdenarPor = "Nombre ASC" Case "NomD" OrdenarPor = "Nombre DESC" Case "TamA" OrdenarPor = "Peso ASC" Case "TamD" OrdenarPor = "Peso DESC" Case "ExtA" OrdenarPor = "Extension ASC" Case "ExtD" OrdenarPor = "Extension DESC" Case "ModA" OrdenarPor = "Modificado ASC" Case "ModD" OrdenarPor = "Modificado DESC" Case Else OrdenarPor = "Nombre ASC" End Select .Sort = OrdenarPor .MoveFirst do while not .eof ' acá recorrés el recordset volátil y creás el html necesario.... .Movenext loop .close End With Set rs = nothing Set folder = nothing Set fso = nothing %>
__________________ ...___... |
| ||||
Ay mama! Yo no sabia que se podia hacer esto ![]() Gracias, me acabas de sacar de un aprieto ![]()
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |
| ||||
Je, yo tampoco sabía que se podía hasta antes de febrero de 2005. Recuerdo que fue esa fecha porque en febrero tenemos poco (o nada) de trabajo y me puse a mejorar el arministrador de archivos remoto que había hecho hace muuuucho tiempo atrás (igual nunca terminé las mejoras ![]() De allí fue que me puse a investigar cómo ordenar los archivos y llegué a ese script. Y qué bueno que te sirva! Saludos
__________________ ...___... |
| ||||
bueno maestros uan vez mas me sacaron del aprieto... muchisimas gracias... jajajjaja de hecho me dieron mas de lo que pedi... queria ideas y me dieron ejemplos ^^. Bueno nada que decir mas que reiterar mi agradecimiento... saludos
__________________ Haz la guerra en la cama y el amor donde se te de la gana... El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!! |