[ASP-SQL] Limit

Pagina: 1
Acties:

  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
Ik ben bezig met een gastenboekje te schrijven in ASP. De gegevens worden bewaard in een Access 2000 database. Nu wil ik de gastenboek-entry's weergeven per 10.

Ik heb hier al zitten rondneuzen in vorige topics en heb ontdekt dat in MySQL hiervoor de functie LIMIT gebruikt kan worden. Spijtig genoeg heb ik ook moeten ontdekken dat dit niet werkt op m'n Access database. Uit de resultaten die ik gevonden heb met de search hier op Tweakers, heb ik ook gezien dat deze vraag al een paar keer gesteld is maar ik nog nergens een passend en werkend antwoord gevonden. Enkel de manier om met een loop + if-instructie een gedeelte uit de query te tonen.

Dit is niet erg handig en netjes. Daarom ben ik opzoek naar een instructie die net hetzelfde doet als die LIMIT, maar dan eentje die WEL werkt in mijn geval.

Kan me hier iemand bij helpen?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

top?

Doet iets met Cloud (MS/IBM)


  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
Ben ik tegengekomen tijdens het speuren hier maar neemt dit niet enkel de eerste x aantal records? Of heb ik het mis?

edit:

Om het even wat duidelijker te stellen: het moet dus mogelijk zijn om te bladeren zoals bij LIMIT mogelijk is.

[ Voor 36% gewijzigd door Blacksnak op 30-11-2002 19:00 ]


Verwijderd

In Access heb je inderdaad alleen Top, met 1 parameter. Gecombineerd met een Order By kan je daarmee de eerste X items venden. Het is echter niet mogelijk om items X tot Y te selecteren (met X > 0).

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Je kan ADO's paging gebruiken...
Of je leest dit topic ff door. Dat gaat wel over MSSQL, maar misschien werkt het met Access ook wel.

日本!🎌


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Verwijderd schreef op 30 november 2002 @ 19:23:
In Access heb je inderdaad alleen Top, met 1 parameter. Gecombineerd met een Order By kan je daarmee de eerste X items venden. Het is echter niet mogelijk om items X tot Y te selecteren (met X > 0).

Als ik het goed heb kan je wel subqueries in access gebruiken dus door een select op je eigen query te doen kan je limit namelijk wel nabootsen.

query1:
code:
1
select top 50 , id, name from tabelletje order by id;


En dan query2
code:
1
select top 10, id, name from query1 order by id desc;


kan je eventueel nog een derde query erop los laten om ze in de juiste volgorde te krijgen:
code:
1
select id,name from query2 order by id;

En zie, je hebt limit nagebootst.

( gechecked: Het werkt inderdaad :+ )

[ Voor 4% gewijzigd door dusty op 30-11-2002 20:56 ]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
Hartelijk dank

Zal het allemaal eens uittesten

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Als ik jou was zou ik het doen met ADO. Als je op www.webwizguide.com het gastenboek download kan je hier naar kijken om het als voorbeeld gebruiken, ik vind de methode die daar wordt gebruikt erg fraai en ook erg breed toepasbaar...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

http://www.asp101.com/samples/db_paging.asp

Staat een heel artikel beschreven hoe je paging kan toepassen

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
daar staat dus egenlijk:
1) geef elk record een nummer
2) als nummer tussen min & max, dan regel laten zien
3) recordnummer = recordnummer + 1

zoals ik het zie tenminste...

  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
Na enig speurwerk adv tips hier ben ik tot de volgende oplossing gekomen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%
If Request.QueryString("pg") = "" Then 
    page = 1 
Else 
    page = CInt(Request.QueryString("pg")) 
End If 
          
strSQL = "SELECT * FROM tblGastenboek ORDER BY ID DESC"
        
set rst = server.CreateObject("adodb.recordset")
rst.open strSQL,cnn,3,1
          
rst.pagesize = 5
rst.absolutepage = page
say = rst.pagecount

for i = 1 to rst.pagesize 
    if rst.eof then exit for
            
    response.write("Hier komt het gedeelte om gastenboekgeg af te drukken")
    
            
    rst.movenext
next
        
rst.close
Set rst = Nothing
%>


Misschien handig als iemand anders dit nodig heeft.

Om er het aantal pagina's nog bij te hebben kun je volgende module nog ergens tussenplaatsen:

code:
1
2
3
4
5
6
7
8
9
10
11
<%
if say <> 1 then
    for i=1 to say
        if i <> page then
            response.write("[ <a href='gb.asp?pg=" & i & "'>" & i & "</a> ] ")
        else
            response.write("<font color='#006600'>[ " & i & " ] </font>")
        end if
    next
end if
%>
Pagina: 1