webForumDet fria alternativet

limit

ASPur ASP

4 svar · 301 visningar · startad av Danmagnus

DanmagnusMedlem sedan maj 2000269 inlägg
#1

Jag håller på att pula ihop ett script som istället för att spotta ut allt i en tabell istället portionerar ut 10 åt gången.. men det funkar inte när man kommit en bit in i tabellen och sen ska tillbaks till föregående 10 posterna, då hoppar den istället tillbaka till den första posten i tabellen.


<%
antal=10
set databas = Server.CreateObject("ADODB.Connection")
databas.Open "PROVIDER=Microsoft.jet.oledb.4.0;data source=" & SERVER.MAPPATH("./")&"\kontakten.mdb"
response.write(("SELECT TOP " & antal & " * FROM ANNONS WHERE AID" & request.querystring("vilkethall") & request.querystring("next") & " ORDER BY AID"))

set poster=databas.execute("SELECT TOP " & antal & " * FROM ANNONS WHERE AID" & request.querystring("vilkethall") & request.querystring("next") & " ORDER BY AID")

response.write("<TABLE BORDER=1><TR>")

FOR EACH tabellnamn IN poster.fields
response.write("<TH>"&tabellnamn.name&"</TH>")
NEXT

DO UNTIL poster.eof=True
response.write("</TR><TR>")
FOR EACH tabellvarde IN poster.fields
response.write("<TD>"&tabellvarde.value&"</TH>")
NEXT
nexten=poster.fields("AID")
poster.movenext
LOOP

response.write("</TR></TABLE>")

IF nexten="" THEN
nexten=request.querystring("next")
END IF

response.write("<P><A HREF='"&request.Servervariables("script_name")&"?next="&nexten&"&vilkethall=>'>Nästa "&antal&" poster")
response.write("<P><A HREF='"&request.Servervariables("script_name")&"?next="&nexten-(antal-1)&"&vilkethall=<'>Föregående "&antal&" poster")

databas.close
set databas=Nothing
set poster=Nothing
%>
emissionMedlem sedan dec. 19996 721 inlägg
#2

Ta en titt på hur din SQL-sats verkligen blir när du går tillbaka.
Det blir nämligen lite fel.

När du hoppar framåt är det inget problem, för det är ju bara att hämta det som har högre AID än den sista AID du hämtade (nexten), men om du ska backa kan du inte hämta det som har lägre AID än nexten, för då börjar man ju från början igen.

Jag rekommenderar dig att använda t.ex. tekniken i FAQn i stället.

------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB

DanmagnusMedlem sedan maj 2000269 inlägg
#3

Asch, måste ju vara lite rebell.
Varför kan man inte hämta det som är mindre om man kan hämta det som är större?. det är väl ingen skillnad.
Ge mig nu lite shysst kod :) ..

PatrikBMedlem sedan mars 20002 836 inlägg
#4

Kolla in denna artikel:
Beyond ADO paging

det är precis vad du letar efter och funkar mot tex mySQL ODBC som ej har full ADODB.Recordset stöd ... ännu ;o)

cya,
PatrikB

------------------
=================================
** ZWGdesign **
=================================

emissionMedlem sedan dec. 19996 721 inlägg
#5

"Varför kan man inte hämta det som är mindre om man kan hämta det som är större?. det är väl ingen skillnad."

Jo. Hämta större om alla:

SELECT TOP 10 fält WHERE ID>345

..hämtar de första 10 posterna som har ID större än 345

SELECT TOP 10 fält WHERE ID<345

..hämtar de första 10 posterna som har ID mindre än 345, dvs. rent teoretisk, post 1 till 10.

Du kan vända på sorteringsordningen i andra fallet...

SELECT TOP 10 fält WHERE ID<345 ORDER BY ID DESC

...och få rätt poster, men då har de ju helt plötsligt bytt ordning, och det är ju ingen höjdare.

135 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)