webForumDet fria alternativet

2D-Array sorteringsproblem

6 svar · 217 visningar · startad av nill

nillMedlem sedan okt. 2001387 inlägg
#1

Jag hittade en sorteringsalgoritm till min Array här på webforum. Den funkar ganska bra men har ett stort problem med det.
Den sorterar så här:

     Staeger     
     Trituz 
     Vladrimir     
     XitR     
     abriz\_    
     alkaida   
     drillen     
     error    
     fet johan  

alltså börjar om igen. Koden ser ut såhär:

Private Function Sort2D(ByVal ArrayToSort, ByVal iPos)
	Dim intMaxIndex
	Dim I, X
	Dim varTemp
	Dim intPositions, intPos
	intMaxIndex = UBound(ArrayToSort,2)
	intPositions = UBound(ArrayToSort,1)
	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
	Sort2D = ArrayToSort
End Function
PatrikBMedlem sedan mars 20002 713 inlägg
#2

Argumentet iPos bestämmer vilken av positionerna i den 2-dimensionella arrayen som det ska sorteras på.

Sorterar du på rätt position???

visa lite mer kod, kod där du anropar denna funktion.

cya,
PatrikB

nillMedlem sedan okt. 2001387 inlägg
#3

Här är själva Array'n:

Arr(0, q) = RecSet("ID")			
Arr(1, q) = RecSet("nick")
Arr(2, q) = RecSet("titel")
Arr(3, q) = RecSet("gang")

och så sorteringsanropet

Arr = Sort2D(Arr, 1)
PatrikBMedlem sedan mars 20002 713 inlägg
#4

återkommer ......

cya,
PatrikB

PatrikBMedlem sedan mars 20002 713 inlägg
#5

har nu kikat på den igen ..... det är ett LCase som fattas i sorteringen:

Private Function Sort2D(ByVal ArrayToSort, ByVal iPos)
	Dim intMaxIndex
	Dim I, X
	Dim varTemp
	Dim intPositions, intPos
	intMaxIndex = UBound(ArrayToSort,2)
	intPositions = UBound(ArrayToSort,1)
	For I = 0 To intMaxIndex
		For X = (I + 1) To intMaxIndex
			If [b]LCase[/b](ArrayToSort(iPos, I)) > [b]LCase[/b](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
	Sort2D = ArrayToSort
End Function

nu bör det funka

cya,
PatrikB

PatrikBMedlem sedan mars 20002 713 inlägg
#6

fast ... borde du inte sortera i din sql-fråga???? klart mycket effektivare

cya,
PatrikB

nillMedlem sedan okt. 2001387 inlägg
#7

tack så mycket. fungerade bra nu.

SQL sortering är ju mycket bättre men ser inget sätt att använda det här.Vi ska nog inte gå in på det närmare om du inte är jätteintresserade. Har att göra med att jag lagrar många ID i en kolumn och sen då hämtar informationen till varje ID.

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb