---
title: "Itereringsproblem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/146124-itereringsproblem"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "CatZ"
published: "2006-04-27T04:15:33.000Z"
updated: "2006-04-27T13:34:53.000Z"
replies: 6
views: 476
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/146124-itereringsproblem"
---

# Itereringsproblem

## #1 — CatZ, 2006-04-27T04:15Z

Försöker få följande Sub att skriva ut select:er för ALLA produkter som finns i databasen inte bara den första.... Jag kommer ingenstans vad är det som jag gjort fel här? 

```
Sub sSelectProducts
	dim strSQL, objRS
	dim intUsers, intCost, intLicenseID, intLicenseID2
	dim strProdLong, strUsers
	
	strSQL = "SELECT tblLicenses.licenseID, tblLicenses.licensePrice, tblLicenses.licenseUsers," & _
			 " tblProducts.productShort, tblProducts.productTitle " & _
			 " FROM tblProducts INNER JOIN tblLicenses " & _
			 " ON tblProducts.productID = tblLicenses.productID " & _
			 " WHERE tblProducts.productDescr <> '' "
	set objRS = objConn.Execute(strSQL)
	
	strProdLong		= objRS("productTitle")	
	
	response.write "<select id=""req_formUsers"" name=""req_formUsers"">" & _
			"<option value=""0"">" & strProdLong & "</option>" & vbCrLf
	Do While NOT objRS.EOF
	
		intLicenseID	= CInt(intLicenseID)
		intLicenseID2	= CInt(objRS("licenseID"))
		intUsers 		= CInt(objRS("licenseUsers"))
		intCost	 		= CInt(objRS("licensePrice"))
		strUsers 		= intUsers & " Users = $ " & intCost
	
		Response.Write "<option value=""" & intLicenseID2 & """ " & vbCrLf
			If intLicenseID = intLicenseID2 Then
				Response.Write """ selected=""selected"" "
			End If
		Response.Write ">" & strUsers & "</option>" & vbCrLf				
	objRS.movenext
	Loop
	response.write "</select>" & vbCrLf
End Sub
```

 Det finns bara två produkter i databasen än så länge. Båda har  något i productDescr-fältet och båda har licenser/priser i tblLicenses... förstår inte varför  det blir fel. Måste jag flytta tillbaka i recordsetet eller vad är det som händer egentligen?

Permalänk: https://www.webforum.nu/p/146124

## #2 — @nders, 2006-04-27T05:54Z

Ställ frågan direkt i din dbms (access?) och se så du verkligen får ut alla poster.

Permalänk: https://www.webforum.nu/p/1804233

## #3 — CatZ, 2006-04-27T07:19Z

Japp det fungerar som det ska. Det hamnar en liten rad med produktID 2 där :) Vänta lite alla produkter skrivs ju ut under samma fråga ska jag behöva nästla själva utskriften? Såg precis att min andra produkt inte alls skrivs ut i en egen select utan hamnar underst i den första givetvis.

Är det ok att köra två olika sql frågor och hämta produktid i den första och sedan loopa igenom den och skriva ut all license info i en ny nästlad loop?

Kan man lösa det i själva frågan på något vis?

Permalänk: https://www.webforum.nu/p/1804252

## #4 — @nders, 2006-04-27T09:53Z

Ok, så du menar att produkterna visst visas allihopa?
Lägg in hela select:en i loopen så bör det väl bli rätt?

> Är det ok att köra två olika sql frågor och hämta produktid i den första och sedan loopa igenom den och skriva ut all license info i en ny nästlad loop?

Nej, det tycker jag inte är OK. Använd en join som den du har.

Permalänk: https://www.webforum.nu/p/1804289

## #5 — CatZ, 2006-04-27T12:56Z

Alltså varje produkt ska ha en egen select. Och varje pris/license ska vara ett option värde i selecten. Gör jag på första viset skrivs bara en select ut med alla licenser som option. Gör jag på ditt föreslagna vis så skrivs selecten ut en gång för varje license. 

Bifogar två bilder som ilustrerar mitt dilemma:

Bilagor:

- [orginalet(min_version).png](https://www.webforum.nu/a/10513.png)
- [anders_forslag.png](https://www.webforum.nu/a/10514.png)

Permalänk: https://www.webforum.nu/p/1804343

## #6 — @nders, 2006-04-27T13:00Z

Då får du sätta en kontrollvariabel i loopen, så du håller koll om det är samma produkt som tidigare, eller en ny, då får du skriva ut \<select\> och \</select\>. Är det inte den första produkten, så måste du sätta en \</select\> innan du börjar med den nya.

Permalänk: https://www.webforum.nu/p/1804346

## #7 — CatZ, 2006-04-27T13:34Z

Jamen givetvis :r Usch vad pinsamt. Ni vet hur det är... man stirrar sig blind på koden hehe lösningen blir då

```
	i = 0
	Do While NOT objRS.EOF
		intProductID	= CInt(objRS("productID"))
		intLicenseID	= CInt(intLicenseID)
		intLicenseID2	= CInt(objRS("licenseID"))
		intUsers 		= CInt(objRS("licenseUsers"))
		intCost	 		= CInt(objRS("licensePrice"))
		strUsers 		= intUsers & " Users = $ " & intCost
		strProdLong		= objRS("productTitle")
		
		If i < intProductID Then
			i = intProductID
			Response.Write "<select id=""req_formUsers"" name=""req_formUsers"">" & vbCrLf	
			Response.Write "<option value=""0"">" & strProdLong & "</option>" & vbCrLf	
		End If
			Response.Write "<option value=""" & intLicenseID2 & """ " & vbCrLf
			If intLicenseID = intLicenseID2 Then
				Response.Write """ selected=""selected"" "
			End If
			Response.Write ">" & strUsers & "</option>" & vbCrLf			
	objRS.movenext
	Loop
	response.write "</select>" & vbCrLf
```

Permalänk: https://www.webforum.nu/p/1804358

---

Tråden på webben: https://www.webforum.nu/amne/asp/146124-itereringsproblem
