webForumDet fria alternativet

hämtning från databas

ASP

6 svar · 313 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

hej

jag har fått problem med följande kod:

				If NOT objRS5.EOF OR objRS6.EOF Then 				
					Response.Write "<div id=""startsidan_silly"">"						
						Response.Write "<img alt=""Silly Season"" title=""Silly Season"" src=""/bilder/silly.png"" />"
						
												If NOT objRS5.EOF THEN
							Response.Write ""&objRS5("nyRubrik")&""
						END IF
						
												If NOT objRS6.EOF THEN
						Do While Not objRS6.EOF			

							Set objRS7 = objConn.Execute("SELECT * FROM klubbar WHERE lagID= "&objRS6("nyKlubbID"))		
								
								If NOT objRS7.EOF THEN
									Response.Write "<br />"&objRS7("lagNamn")&""
								END IF
								
						objRS6.MoveNext
						Loop
						objRS6.Close 
						Set objRS6 = nothing 

						END IF
						
					Response.Write "</div>"
				END IF

Det är första raden jag har problem med tror jag.

If NOT objRS5.EOF OR objRS6.EOF

Alltså när inte objRS5 eller objRS6 är tom så ska det visas, men det vill inte fungera. har provat med bara

If NOT objRS6.EOF

Då fungerar det, men när jag har bägge med så kommer inget fram.
Hur löser jag detta?

Tacksam för all hjälp jag kan få :OO

Medlem sedan dec. 19996 721 inlägg
#2
if NOT objRS5.EOF OR objRS6.EOF

betyder "Om objRS5 inte är tom eller om objRS6 är tom"

If NOT objRS5.EOF OR NOT objRS6.EOF

eller

If NOT (objRS5.EOF AND objRS6.EOF)

..är det som gäller

Medlem sedan sep. 2005833 inlägg
#3

tack emission, det fungerade :bire

har nu fått ett annat problem istället :r

har koden:


        IF NOT Request.QueryString("arID") = "" THEN
            Set objRS = objConn.Execute("SELECT spelare_statistik.statID, spelare_statistik.playerID, spelare_statistik.statSasongID, spelare_statistik.klubbID, spelare_statistik.klubbNamn, spelare_statistik.statMatcher, spelare_statistik.statMal, spelare_statistik.statAssist, spelare_statistik.statUtvisad, spelare_statistik.statPlusMinus, spelare_statistik.statRaddning, spelare_statistik.statInMal, spelare_statistik.statNollor, nhl_sasonger.arID, nhl_sasonger.arAr1, nhl_sasonger.arAr2 FROM nhl_sasonger INNER JOIN spelare_statistik ON nhl_sasonger.arID = spelare_statistik.statSasongID WHERE arID="&Request.QueryString("arID")&" ORDER BY arAr1 DESC, arAr2 DESC, statMal + statAssist DESC")

        ELSE
            Set objRS = objConn.Execute("SELECT spelare_statistik.statID, spelare_statistik.playerID, spelare_statistik.statSasongID, spelare_statistik.klubbID, spelare_statistik.klubbNamn, spelare_statistik.statMatcher, spelare_statistik.statMal, spelare_statistik.statAssist, spelare_statistik.statUtvisad, spelare_statistik.statPlusMinus, spelare_statistik.statRaddning, spelare_statistik.statInMal, spelare_statistik.statNollor, nhl_sasonger.arID, nhl_sasonger.arAr1, nhl_sasonger.arAr2 FROM nhl_sasonger INNER JOIN spelare_statistik ON nhl_sasonger.arID = spelare_statistik.statSasongID ORDER BY arAr1 DESC, arAr2 DESC, statMal + statAssist DESC")

        END IF

Do While ar=objRS("arAr1")

Nu vill jag att den ska loopa runt sålänge ar=objRS("arAr1") eller så länge det det finns några poster i databasen.
Det fungerar så länge Request.QueryString("arID") = "" (är tom) men när den får ett värde så kommer den hämtade texten fram plus ett felmeddelande:

error '80020009'
Exception occurred.

index.asp, line 1126

på raden:
Do While ar=objRS("arAr1")

Hur löser jag detta så det fungerar både när arID har ett värde och när den är tom?? :stud

Medlem sedan juni 20003 076 inlägg
#4

"Man" brukar lägga till en 'if' efter en databashämtning, detta utifall om recordsetet är tomt.
Sen ett tips: använd alias på tabellnamnen så slipper selecten bli så himla lång och svårläst! :)

IF NOT Request.QueryString("arID") = "" THEN
	Set objRS = objConn.Execute("SELECT s.statID, s.playerID, s.statSasongID, s.klubbID, s.klubbNamn, s.statMatcher, s.statMal, s.statAssist, s.statUtvisad, s.statPlusMinus, s.statRaddning, s.statInMal, s.statNollor, n.arID, n.arAr1, n.arAr2 FROM nhl_sasonger n INNER JOIN spelare_statistik s ON n.arID = s.statSasongID WHERE n.arID="&Request.QueryString("arID")&" ORDER BY n.arAr1 DESC, n.arAr2 DESC, statMal + statAssist DESC")
ELSE
	Set objRS = objConn.Execute("SELECT s.statID, s.playerID, s.statSasongID, s.klubbID, s.klubbNamn, s.statMatcher, s.statMal, s.statAssist, s.statUtvisad, s.statPlusMinus, s.statRaddning, s.statInMal, s.statNollor, n.arID, n.arAr1, n.arAr2 FROM nhl_sasonger n INNER JOIN spelare_statistik s ON n.arID = s.statSasongID ORDER BY n.arAr1 DESC, n.arAr2 DESC, statMal + statAssist DESC")
END IF

IF NOT objRS.EOF THEN
     DO ...

END IF

Sen hajjar jag inte riktigt din order by: ... statMal + statAssist DESC
Kan man verkligen skriva så?! :q
Det har jag aldrig sett i alla fall! :stud

Medlem sedan sep. 2005833 inlägg
#5

hmm, ok, jo, jag har en If objRS.EOF Then, men problemet är
Do While ar=objRS("arAr1"), när inte Request.QueryString("arID") = "" så ska alla poster hämtas tills de är slut, men när Request.QueryString("arID") är tom så ska alla poster hämtas så länge strängen ar = den senaste post arAr1 (Do While ar=objRS("arAr1"))

Vet inte redigt hur jag ska lösa det hela :OO

Medlem sedan juni 20003 076 inlägg
#6

Du skulle kunna lösa det genom att loopa från början till slut oavsett recordset men att du i loopen kollar så att rätt id visas. :)

Do until objRs.Eof 
   If len(Request.QueryString("arID")) = 0 Or Request.QueryString("arID") = objRs("arID") Then
       ...
   End If
   objRs.MoveNext
Loop
Medlem sedan dec. 19996 721 inlägg
#7

Och stoppa ALDRIG in ett värde direkt från request i en SQL-sats! SQL Injection!

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)