PoffeMedlem sedan apr. 20022 935 inlägg 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 Ä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 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 Aha, ok.. :)
Hur ser värden i arrayen ut?
PoffeMedlem sedan apr. 20022 935 inlägg 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 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 tack, ska kolla på det och se om jag kan lösa det på nått vis :)
PoffeMedlem sedan apr. 20022 935 inlägg 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å ;)