CatZMedlem sedan jan. 20022 341 inlägg
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?
@ndersMedlem sedan juni 200026 914 inlägg
Ställ frågan direkt i din dbms (access?) och se så du verkligen får ut alla poster.
CatZMedlem sedan jan. 20022 341 inlägg
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?
@ndersMedlem sedan juni 200026 914 inlägg
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.
CatZMedlem sedan jan. 20022 341 inlägg
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:
@ndersMedlem sedan juni 200026 914 inlägg
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.
CatZMedlem sedan jan. 20022 341 inlägg
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