webForumDet fria alternativet

Avsluta Loop om värdet finns fler ggr

ASP

14 svar · 404 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1

Hur fanken avslutar man loopen och varje värde bara ska skrivas ut en gång?

Medlem sedan juni 20019 519 inlägg
#2

kan man inte använda exit for ?

Medlem sedan maj 2002821 inlägg
#3

Jo, men hur skulle det se ut? Hur kollar man om samma värde håller på att skrivas ut igen om det finns dubletter?

Do Until rs.EOF

rs.MoveNext
Loop
Medlem sedan aug. 20003 575 inlägg
#4

Är värdena ordnade eller kan dom komma huller och buller?

Medlem sedan maj 2002821 inlägg
#5

Ska vara ordnade.

Medlem sedan aug. 20003 575 inlägg
#6

OBS! Inte testat koden.

Denna kod förutsätter att värdena kommer i ordning t.ex. om det är nummer så skall det komma såhär

T.ex.
1
1
1
2
4
4
6
8
8

Inte t.ex.
5
3
6
7
5

Dim Exit 'bool
Dim Temp
Exit = false

Do Until Rs.Eof And Not Exit

If Temp = Rs("kolumn") Then
Exit = true
Else
Temp = Rs("Kolumn")
'Resten av koden
End If

Rs.MoveNext
Loop
Medlem sedan maj 2002821 inlägg
#7

Det är nummer ja, men hur blir det om dessa inte är i ordning då?

Medlem sedan maj 200010 687 inlägg
#8
Dim dic
Set dic = Server.CreateObject("Scripting.Dictionary")
dic.CompareMode = 1

Do Until rs.EOF
	If dic.Exists("n" & rs("kolumn").Value) Then
		Exit Do
	Else
		dic("n" & rs("kolumn").Value) = 1
	End If
	
	'do your thing...
	
	rs.MoveNext
Loop

Set dic = Nothing
Medlem sedan dec. 20003 887 inlägg
#9

Om det ändå är ett recordset, varför inte sålla bort dubletter när du plockar ut datat?

Medlem sedan mars 20041 505 inlägg
#10

Engine^, precis, tänkte också det. Jag misstänker att du hämtar ut onödigt mycket ur databasen. Gör en mer specifik SQL-fråga som bara returnerar de poster du vill visa istället.

Medlem sedan nov. 20017 144 inlägg
#11

Spring inte över ån efter vatten. ;)

Medlem sedan maj 2002821 inlägg
#12

Såhär ligger det till. I tabellen ligger det ordrar. Varje rad i tabellen är en beställd produkt. Om flera produkter beställts i samma order är det alltså flera rader som har samma order id.
Jag vill lista alla ordrar med order id som länk, alltså until rs.EOF men bara skriva ut det order id en gång för varje order. Det är ju dumt att ha samma länk flera gånger.

Medlem sedan mars 20041 505 inlägg
#13

Då kan du kan lösa detta direkt i SQL-frågan och slippa massor med jobbig ASP-kod.

Använd Distinct på Order-ID:t för att filtrera bort dubletter:

SELECT DISTINCT OrderID FROM tblOrders

Hoppas du förstår!

Medlem sedan maj 2002821 inlägg
#14

Problemet med DISTINCT är att man inte kan sortera resultatet med ORDER BY. Jag får iaf ett felmeddelande.

Medlem sedan dec. 20003 887 inlägg
#15

GROUP BY OrderId

Använd inte distinct.

276 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)