webForumDet fria alternativet

problem att hämta ut från databasen

ASP

11 svar · 500 visningar · startad av Vinnaren

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

Hej

Jag har problem att få ut den informationen jag vill ha ut från databasen.

Har följande kod:

Set objRS = objConn.Execute("SELECT spelare_statistik.statID, spelare_statistik.playerID, spelare_statistik.statSasongID, spelare_statistik.statTavling, 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 statTavling=0 ORDER BY arAr1 DESC, arAr2 DESC, statMal + statAssist DESC")

If objRS.EOF Then 
Response.Write "saknas"
ELSE
arID = objRS("arID")
Do While arID=objRS("arID")

Jag vill alltså hämta ut all information så länge det e samma år (arID).tex så vill jag bara ha ut all information från året 2006 (om den ligger först i sorteringen)

Hur löser jag detta??

koden jag har nu ger följande felmeddelande:
Undantag inträffade.

på raden Do While arID=objRS("arID")

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

Medlem sedan jan. 2001229 inlägg
#2

Kan man få se resten av while-loopen?

Medlem sedan sep. 2005833 inlägg
#3

Visst :)


<%
If objRS.EOF Then 
Response.Write "saknas"
ELSE
arID = objRS("arID")
Do While arID=objRS("arID")
			
			
poang = objRS("statAssist")+objRS("statMal")
		
Set objRS1 = objConn.Execute("SELECT * FROM spelare WHERE playID="&objRS("playerID"))
Set objRS2 = objConn.Execute("SELECT * FROM klubbar WHERE lagID="&objRS("klubbID"))
%>
 <tr>
	<td>
	<%
	If objRS1.EOF Then 
		Response.Write "Okänd"
	Else		
		Response.Write ""&objRS1("playFnamn")&" "&objRS1("playEnamn")&""
	END IF
	%>
	</td>
	<td>
	<%
	If objRS2.EOF Then 
		Response.Write ""&objRS("klubbNamn")&""
	Else		
		Response.Write ""&objRS2("lagNamn")&""
	END IF
	%>
	</td>
	<td><%=objRS("statMatcher")%></td>
	<td><%=objRS("statMal")%></td>
	<td><%=objRS("statAssist")%></td>
	<td><%=poang%></td>
	<td><%=objRS("statPlusMinus")%></td>
  </tr>
<%
objRS.MoveNext
Loop
END IF
objRS.Close 
Set objRS = nothing 
%>
Medlem sedan juni 20019 519 inlägg
#4

Du kan inte skriva så.. det kommer bli en evighets loop känns det som... du kontrollera om do until 1 = 1.

Varför plockar du inte ut det du vill med din SQL fråga direkt?

Medlem sedan sep. 2005833 inlägg
#5

ja, du. Jag vill bara hämta ut den senaste säsongen. Vilken det är beror på årtalet. Därför vill jag inte ange ett årID, för blir det ett nytt år så måste man ju gå in i filen och ändra?
Nu sorterar jag bara efter årtalen, sen sätter arID = första största året. Borde det inte gå att göra så, eller hur ska man lösa det?

Medlem sedan dec. 19996 721 inlägg
#6

Felet är loopen, som sagt, men inte att den blir oändlig. Problemet är att du loopar med Movenext men låter bli att kolla om objRS är vid EOF.

Medlem sedan sep. 2005833 inlägg
#7

okey. har du något förslag på hur jag kan lösa det? kodmässigt?

Medlem sedan dec. 19996 721 inlägg
#8
objRS.MoveNext
if objRS.EOF then Exit Do
loop
Medlem sedan sep. 2006867 inlägg
#9

Jag är nyfiken på hur RS, RS1 och RS2 hänger ihop, det verkar som att du inte har några nycklar melan tabellerna utan förlitar dig på att informationen ligger i rätt ordning. Har jag förstått din design rätt då? Det är en extremt skör databasdesign, och som voigtann1 säger: varför plockar du inte ut allt med endast en enkel sql-fråga? Hade du nycklar mellan tabellerna borde det gå utan problem :)

Medlem sedan sep. 2005833 inlägg
#10

kanske ska säga det att jag Använder Access som databas än så länge.
jag använder enbart pk i databasen.

RS hämtar ut statistiken samt årtalen

RS1 hämtar ut namnet på spelaren, saknas namnet på spelaren så skrivs "okänd" ut

RS2 hämtar ut den klubb som spelaren tillhörde, finns inte klubben i databasen så ska texten skrivas ut i RS från kolumnen klubbnamn. (vilket är ganska vanligt)

Kanske finns något bättre sätt att lösa det på??

Medlem sedan sep. 2006867 inlägg
#11

Mjo, om du i tabellen spelare lägger till en kolumn "klubbID" som är FK till ID i tabellen klubbar så kan du slå ihop RS1 och RS2 till en fråga, och om du visar hur RS-frågan ser ut så kan man säkert fixa ihop det till en enda fråga. Access är ganska snabb och att loopa i asp är långsamt :)

Medlem sedan sep. 2005833 inlägg
#12

jag har en kolumn klubbID i spelare, men den visar bara aktuell klubb. Så den kan jag inte anv i statistiken. För byter spelaren klubb så byter den ju även klubb i statistiken (vilket inte är så bra). Så jag har ett "relations objekt" där, med årID, spelarID, KlubbID finns. Men skulle jag slå samman allt till en sql fråga, då skulle ju bara de som har en klubb som finns i tabellen klubbar hämtas????

Eftersom alla klubbar inte kommer att finnas i databasen så har jag i "relations objektet" även en kolumn med KlubbNamn, där eventuellt namn ligger.

309 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
164 ms — hämta tråd, inlägg och bilagor (db)
141 ms — ändringar (db)