webForumDet fria alternativet

Problem med 2 RS

ASP

8 svar · 575 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Frågan#1
Set RS = Server.CreateObject("ADODB.Recordset")

   Visa = "SELECT * FROM Pmiljo WHERE Miljonr = '" & Request.QueryString("miljo") & "' ORDER BY PU"
   RS.Open Visa, Connect 
      
   Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visamil = "SELECT Id, Artikelnr, Namn, Bild FROM Plattor WHERE Artikelnr = '" & RS("Platta") & "' ORDER BY Artikelnr"
   RecSet.Open Visamil, Connect

VISA plockar ut en bild på en miljö.
VISAMIL ska lista alla plattor i miljöen.

Problemet är att den bara visar en platta även om det borde vara flera. Såhär försöker jag visa plattor:

	Do While not RecSet.EOF   
	Response.write "<td><a href='a_present.asp?platta="&RecSet("Id")&"'><img src='bild1/small_"&RecSet("Bild")&"' alt='' width='100' height='100' border='0'><br>"&RecSet("Namn")&"</a></td>"
	RecSet.MoveNext
	Loop
Medlem sedan juni 20019 519 inlägg
#2

Du kan göra en INNER JOIN på din SQL fråga för att bara plocka ut ett Recordset. Men:
Du måste just nu loopa ut ditt RS objekt:

Set RS = Server.CreateObject("ADODB.Recordset")

Visa = "SELECT * FROM Pmiljo WHERE Miljonr = '" & Request.QueryString("miljo") & "' ORDER BY PU"
RS.Open Visa, Connect 

Do Until RS.EOF
	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Visamil = "SELECT Id, Artikelnr, Namn, Bild FROM Plattor WHERE Artikelnr = '" & RS("Platta") & "' ORDER BY Artikelnr"
	RecSet.Open Visamil, Connect
	
	Do While not RecSet.EOF   
		Response.write "<td><a href='a_present.asp?platta="&RecSet("Id")&"'><img src='bild1/small_"&RecSet("Bild")&"' alt='' width='100' height='100' border='0'><br>"&RecSet("Namn")&"</a></td>"
		RecSet.MoveNext
	Loop
	
	RecSet.Close
	Set RecSet = Nothing

	RS.MoveNext
Loop
Medlem sedan maj 2001420 inlägg
#3

Tack Voigtann! Tror dock det blir smidigare med ett rs då jag ska 'skriva ut' olika värden på många olika sätt på sidan. Försöker fixa en innerjoin.

Medlem sedan maj 2001420 inlägg
#4

Nu har jag klåpat ihop följande:

"SELECT Pmiljo.Id, Pmiljo.Miljonr, Pmiljo.Platta, Pmiljo.PU, Pmiljo.Bild, Pmiljo.Brodtxt, Plattor.Artikelnr, Plattor.Bild,Plattor.Namn, Plattor.brodtxt FROM Pmiljo INNER JOIN Plattor ON Pmiljo.Platta = Plattor.Artikelnr WHERE Pmiljo.Miljonr = '" & Request.QueryString("miljo") & "'"

sen blir det ju ett problem när jag ska skriva ut t.ex <%= RS("Bild") %> Bild finns ju båda i Pmiljo och Plattor (olika bilder)
Betyder detta att man inte kan ha samma namn på kolumner i olika tabeller, eller hur gör man?

Medlem sedan juni 200032 967 inlägg
#5

Du får ge fälten alias.

Select pmiljo.bild AS miljobild,  plattor.bild AS plattbild....
Medlem sedan maj 2001420 inlägg
#6

Ahhh - lysande!!!

Medlem sedan maj 2001420 inlägg
#7

Nu har jag problem med loopen igen :(
Trodde jag löste detta med ett Rs.

"SELECT Pmiljo.Id, Pmiljo.Miljonr, Pmiljo.Platta AS Miljoplatta, Pmiljo.PU, Pmiljo.Bild AS Miljobild, Pmiljo.Brodtxt, Plattor.Id AS Plattid, Plattor.Artikelnr AS Artikelnr, Plattor.Bild AS Plattbild, Plattor.Namn AS Plattnamn, Plattor.brodtxt FROM Pmiljo INNER JOIN Plattor ON Pmiljo.Platta = Plattor.Artikelnr WHERE Pmiljo.Miljonr = '" & Request.QueryString("miljo") & "'"

Nu hämtar inte loopen några alls.

Sub Visaplattor

response.write "Plattor som är använda i ovanstående bild:<br>"
response.write "Visamil: "& Visa & "<br>"
	Do While not RS.EOF   
	Response.write "<td><a href='a_present.asp?platta="&RS("Plattid")&"'><img src='bild1/small_"&RS("Plattbild")&"' alt='' width='100' height='100' border='0'><br>"&RS("Plattnamn")&"</a></td>"
	RS.MoveNext
	Loop
	RS.Close: Set RS = nothing
	
 end sub
Medlem sedan juni 20019 519 inlägg
#8

Lägg ditt anrop där du skapar recordsetet i din Sub.

Sub Visaplattor(miljo)
	dim sql
	sql = "SELECT Pmiljo.Id, Pmiljo.Miljonr, Pmiljo.Platta AS Miljoplatta, Pmiljo.PU, Pmiljo.Bild AS Miljobild, Pmiljo.Brodtxt, Plattor.Id AS Plattid, Plattor.Artikelnr AS Artikelnr, Plattor.Bild AS Plattbild, Plattor.Namn AS Plattnamn, Plattor.brodtxt FROM Pmiljo INNER JOIN Plattor ON Pmiljo.Platta = Plattor.Artikelnr WHERE Pmiljo.Miljonr = '" & miljo & "'"
	Set RS = Server.CreateObject("ADODB.Recordset")

	RS.Open sql, Connect 
	Response.Write "Plattor som är använda i ovanstående bild:<br>"
	Response.Write "Visamil: "& Visa & "<br>"
	Do While not RS.EOF   
		Response.Write "<td><a href='a_present.asp?platta="&RS("Plattid")&"'><img src='bild1/small_"&RS("Plattbild")&"' alt='' width='100' height='100' border='0'><br>"&RS("Plattnamn")&"</a></td>"
		RS.MoveNext
	Loop
	RS.Close: Set RS = Nothing
End Sub

och Andropar det med:

Visaplattor Request.QueryString("miljo")
Medlem sedan maj 2001420 inlägg
#9

Tack, tack! Funkar jättebra!

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