webForumDet fria alternativet

Distinkt, Array

7 svar · 221 visningar · startad av Poffe

PoffeMedlem sedan apr. 20022 935 inlägg
#1

Hejsan

Undrar om det är nån som vet hur man fixar en funktion som utför en "distinkt på en array".

Jag har alltså en array men flera poster men vissa är likadana så de vill jag sortera bort.

Målet är att få fram hur många olika poster det finns i arrayn, en siffra alltså.

Nån som har nått tips?

PallemanMedlem sedan dec. 2000465 inlägg
#2

Är det poster från en databas du sparar i din array?
- I sådana fall kan du använda GetRows och köra en DISTINCT i sql-satsen och på så sätt plocka distinkta poster.

ex.

<%

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("dbName.mdb")
	arrRecSet = Connect.Execute("SELECT DISTINCT fldName FROM tblName").GetRows
	Connect.Close : Set Connect = Nothing
	
	Response.Write "Just nu finns det "& UBound(arrRecSet,2) &" unika poster.."
	
%>
PoffeMedlem sedan apr. 20022 935 inlägg
#3

nej det är det som är kruxet, arrayn skapas utifrån en textfil, hade det vart från en databas är det ju inga problem :)

PallemanMedlem sedan dec. 2000465 inlägg
#4

Aha, ok.. :)
Hur ser värden i arrayen ut?

PoffeMedlem sedan apr. 20022 935 inlägg
#5

hmmm.. ja du, är inte så inne på arrays riktigt än men den är två dimentionell och jag skapar den så här:

Set oTextFil = oFSO.OpenTextFile(sDbFil)
	Do While Not oTextFil.AtEndOfStream
		x = x + 1
		sPost = Split(oTextFil.ReadLine, "|")
		For i = 0 To Ubound(sPost)
			DbArray(i,x) = sPost(i)
		Next
	Loop
oTextFil.Close : Set oTextFil = Nothing

varje rad i textfilen har olika poster separerade med | så första dimentionen är alltså värdet och andra är raden.

det jag vill få fram hur många olika som finns är ifrån:

DbArray(1,x)

alltså andra (det börjar på 0 få 1 blir ju andra) värdet från varje rad

PallemanMedlem sedan dec. 2000465 inlägg
#6

Hmm.. ok. Tyvärr övergår det min kunskap. ;)
Gjorde dock en sökning på Google och fann detta, kanske kan vara nått att titta på iaf. :)

http://www.aspfree.com/authors/robert/Default.asp?aid=66

PoffeMedlem sedan apr. 20022 935 inlägg
#7

tack, ska kolla på det och se om jag kan lösa det på nått vis :)

PoffeMedlem sedan apr. 20022 935 inlägg
#8

jo det blev som jag tänkt från början:

Function Unika()
	sTemp = ""
	For x = 1 To Ubound(DbArray,2)
		If InStr(sTemp, DbArray(1,x) & ",") <= 0 Then sTemp = sTemp & DbArray(1,x) & "," : iTemp = iTemp + 1
	Next 
	Unika = iTemp
End Function

men är detta verkligen den bästa metoden?

Red/

har testat lite nu och det verkar vara den bästa av de som fanns där iallafall, skilljer endast några millesekunder men ändå ;)

126 ms totalt · 3 externa anrop · cache AV · v20260731065814-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
123 ms — hämta tråd, inlägg och bilagor (db)