Alguien sabe como ordenar un array en asp; o si en su defecto existe una funcion que realice esto.
En PHp existe la funcion ksort() -creo que asi se llama- pero no se si existe alguna similar para asp.
Saludox



| ||||
No, "nativamente" ASP/VBScript no trae ningúna función para ordenar un array como PHP. Así que, como te comenta iPunto, lo tenés que hacer vos. Buscando en google vbscript sort array llegué a ésta interesante propuesta: How can I quickly sort a VBScript array? con una comparativa entre, por un lado, usar un "método de burbuja tradicional" en vbscript y, por el otro, pasarle ese array de vbscript a una función JScript (server-side, no Javascript) para eu ésta última lo ordene. Según los resultados, gana en eficiencia la segunda opción por lejos. Igual te dejo un script modificado que uso generalmente para ordenar archivos (por fecha, por tipo, por tamaño, por nombre, etc) que lo que hace es meter el array en un recordset, ordenarlo, y luego mostrarlo ocmo si de un recordset a una base de datos se tratara:
Código:
<% Letras = "q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,ñ,z,x,c,v,b,n,m" arrLetras = Split(Letras, ",") CONST adFldIsNullable = &H00000020 CONST adVarChar = 200 CONST adOpenDynamic = 2 CONST adUseClient = 3 Set Rs = Server.CreateObject("ADODB.Recordset") Rs.CursorLocation = adUseClient Rs.CursorType = adOpenDynamic Rs.Fields.Append "Letra", adVarChar, 255, adFldIsNullable Rs.open For i = 0 To UBound(arrLetras) Rs.AddNew Rs.Fields("Letra") = arrLetras(i) Rs.update Next Rs.Sort = "Letra" While Not Rs.EOF Response.Write Rs("Letra") & "<br>" Rs.MoveNext Wend Rs.Close Set Rs = Nothing %>
__________________ ...___... |
| ||||
Ah, me olvidaba. Con el script anterior, si en vez de darle una salida HTML lo que querés hacer es regenerar el array ordenado, cambiás lo siguiente...
Código:
por...While Not Rs.EOF Response.Write Rs("Letra") & "<br>" Rs.MoveNext Wend
Código:
Estaría bárbaro usar Rs.GetRows para ello... pero no entiendo por qué nunca me funcionó GetRows con un récordset creado así. While Not Rs.EOF arrLetrasOrdenadas = arrLetrasOrdenadas & "," Rs.MoveNext Wend
__________________ ...___... |