webForumDet fria alternativet

Paging-problem

6 svar · 350 visningar · startad av Bendro

BendroMedlem sedan jan. 20011 439 inlägg
#1

Försökte anpassa ett paging-script jag hade till en ny sida. Tanken är att jag skall kunna plocka upp olika poster beroende på vad dom har för status:skickade, besvarade, publicerade och alla

Jag har en meny där dessa val finns och tänkte ladda om sidan vid varje val för att hämta upp rätt poster.
Använder en Select Case för att avgöra vilken SQL-sats som skall köras. Problemet är att jag får upp samtliga poster i databasen oavsett vilket val jag gör. Det enda som funkar är om jag inte har någon post alls som uppfyller sökkriteriet...då blir det EOF.
Men har jag en enda post som uppfylller kriteriet listas hela databasen upp.
För teständamål har jag kört mot en nästan tom databas med 4 poster....1 skickad, 2 besvarad, 1 publicerad. Men jag får alltså upp alla 4 på samtliga alternativ.
Lägger ut Select Case-koden här eftersom jag misstänker att det är där jag gjort fel så slipper ni en massa onödig kod...behövs resten så säg till så lägger jag ut hela filen.
Mina response.write("case #") som ligger i koden är för att jag skall se att den kör rätt case...vilket den gör.

Pagingscriptet fungerar fint när jag testkör i annan fil utan fler Case-alternativ, och SQL-satserna fungerar fint när jag testkör utan paging och med ADODB.Connection. Men alltså inte så här:

--== Start av SELECT CASE ======================================--

			 Set rs=Server.CreateObject("ADODB.Recordset")
			 rs.CursorType=3
Select case(val2)
case "1"
	response.write("case 1")
			 sql="select fraga_text, user_fnamn, user_enamn, skickad, besvarad, publicerad FROM fraga WHERE publicerad=TRUE;"	
case "2" 
	response.write("case 2")
			 sql="select fraga_text, user_fnamn, user_enamn, skickad, besvarad, publicerad FROM fraga WHERE skickad AND NOT besvarad;"
case "3" 
	response.write("case 3")
			 sql="select fraga_text, user_fnamn, user_enamn, skickad, besvarad, publicerad FROM fraga WHERE besvarad AND NOT publicerad;"
case "4"
	response.write("case 4")			 
			 sql="select fraga_text, user_fnamn, user_enamn, skickad, besvarad, publicerad FROM fraga WHERE publicerad;"
END Select
	
			 rs.Open sql,conn			 
		 	 rs.PageSize=10
		 IF rs.EOF then
			 response.write "Det finns inga frågor"
			 ELSE
			 ant_sidor=rs.PageCount
		 END IF

		 IF sida="" THEN
			 	akt_sida=1
				ELSE
					akt_sida=sida
		 END IF
IF NOT rs.eof then
					rs.AbsolutePage=akt_sida

					y=0
end if
'--== Slutet av SELECT CASE ======================================--
LAMPMedlem sedan mars 2002729 inlägg
#2

Sök på paging, du kommer att hitta så du storknar ;)

BendroMedlem sedan jan. 20011 439 inlägg
#3

Jag har sökt och jag har läst. Det jag inte förstår är varför det skall sluta funka när jag lägger in det i Case.

emissionMedlem sedan dec. 19996 095 inlägg
#4

Blir det fel redan på förstasidan? I så fall ligger felet i SQL-satserna. I annat fall beror det antagligen på att val2 inte skickas med till följdsidorna.

BendroMedlem sedan jan. 20011 439 inlägg
#5

När jag testkör SQL-satserna utan att använda paging och öppnar med ADODB.Connection istället för ADODB.Recordset funkar som alldeles utmärkt.

val2 följer med eftersom de response.write jag skrivit vid varje Case visas korrekt...det skulle dom inte gjort annars.

emissionMedlem sedan dec. 19996 095 inlägg
#6

Både Connection och Recordset finns alltid med i bilden.

Visa gärna lite mer kod.

BTW. Slängde en bläng till höger ;) Syntaxen "WHERE skickad AND NOT besvarad" stöds generellt inte utan ska lyda "WHERE skickad=1 AND besvarad=0" (eller "NOT besvarad=1") (beroende på DBMS byts 0 och 1 mot TRUE OCH FALSE). Det förklarar inte det fel du fått, men det bör rättas till.

BendroMedlem sedan jan. 20011 439 inlägg
#7

Hittade felet. Tack för er assistans.
Felet var helt enkelt en miss från min sida, :r
jag hade duplicerat en av databashämtningarna och av någon anledning fått i den i koden på ett felaktigt ställe längre ner i koden vilket resulterade i att det alltid var den hämtningen som kördes.
Jag hade helt enkelt stirrat mig blind på koden.
Pagingen och Case fungerar alltså som det skall. :r

130 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
127 ms — hämta tråd, inlägg och bilagor (db)