Nån som vet nått smart sätt att storera en 2d-array? har testat 4guysfromrolla's men den sorterar bara de två försa posterna i arrayn samt slänger om värderna, alltså så:
arr(1, 1) blir arr(0, 1)
och arr(0, 1) blir arr(1, 1)
Fast som sagt bara på de två första posterna i arrayn.. nån som vet jaf jag gör för fel (har bara kopierat koden rakt av och satt in på min sida) eller nån som har nått annat knep?
<%
Option Explicit
Dim varTemp
Dim N
Dim varArray(2,3)
varArray(0,0) = 1
varArray(1,0) = "Patrik"
varArray(2,0) = "Berggren"
varArray(0,1) = 4
varArray(1,1) = "Anders"
varArray(2,1) = "Andersson"
varArray(0,2) = 2
varArray(1,2) = "Bertil"
varArray(2,2) = "Bertilsson"
varArray(0,3) = 3
varArray(1,3) = "Ove"
varArray(2,3) = "Ovesson"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Sort 2D-Array Ascending or Descending</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">
<%
'## -- sortera på efternamn.
'## -- för att sortera på id byt 2:an till positionen för id - 0 - eller
'## -- för förnamn byt till den positionen - 1 --
varTemp = Sort2D(varArray, "desc", 2)
If IsArray(varTemp) Then
For N = 0 TO UBound(varTemp,2)
Response.Write "ID: " & varTemp(0,N) & " - " & varTemp(1,N) & " " & varTemp(2,N) & "<BR>"
Next
End If
%>
</BODY>
</HTML>
<%
Public Function Sort2D(ByVal ArrayToSort, ByVal sSortOrder, ByVal iPos)
Dim intMaxIndex ' As Integer
Dim I, X ' As Integer
Dim varTemp ' As Variant
Dim intPositions, intPos
intMaxIndex = UBound(ArrayToSort,2)
'## -- get total positions in array --
intPositions = UBound(ArrayToSort,1)
Select Case UCase(sSortOrder)
Case "ASC"
'## -- sort ascending --
For I = 0 To intMaxIndex
For X = (I + 1) To intMaxIndex
If ArrayToSort(iPos, I) > ArrayToSort(iPos,X) Then
For intPos = 0 To intPositions
varTemp = ArrayToSort(intPos, I)
ArrayToSort(intPos, I) = ArrayToSort(intPos, X)
ArrayToSort(intPos, X) = varTemp
Next
End If
Next
Next
Case "DESC"
'## -- sort descending --
For I = 0 To intMaxIndex
For X = (I + 1) To intMaxIndex
If ArrayToSort(iPos, I) < ArrayToSort(iPos,X) Then
For intPos = 0 To intPositions
varTemp = ArrayToSort(intPos, I)
ArrayToSort(intPos, I) = ArrayToSort(intPos, X)
ArrayToSort(intPos, X) = varTemp
Next
End If
Next
Next
End Select
'## -- return sorted array --
Sort2D = ArrayToSort
End Function
%>