834HF42F242 Skrevet 20. juni 2007 Del Skrevet 20. juni 2007 (endret) LØST! Løsning er i en annen tråd her Har bygget opp en tabell med artister, og henter ut infoen med vedlagt kode. Behersker MSSQL og ASP, VbScript bra, men surrer meg inn i en veldig tung tankegang når jeg prøver å finne en løsning på å fordele tabellen på flere sider. Det første jeg tenkte var å ha en teller som teller antall loops, og stopper etter x antall rader. Så tenkte jeg å bruke "adoRec.MoveNext" etter at telleren har oppfyllt en gitt verdi, for så å ta samme prosess om igjen. Men så stopper det opp i tankene når jeg finner ut at jeg må finne antall ganger loopen skal foretas på x rader. Noen ideer/forslag? <% fjernet %> Endret 20. september 2007 av neitakk Lenke til kommentar
eiden84 Skrevet 1. august 2007 Del Skrevet 1. august 2007 I MySQL kan du bruke LIMIT til dette. Du legger til en GET-parameter (link) for å vite hvilken side du er på. Eksempel: side.asp?page=1 side.asp?page=2 side.asp?page=3 osv. La oss si du har en tabell med 5 sider. Du vil vise 10 rader pr. side. På Side 1 så kjører en spørring og skriver ut html SELECT * FROM table LIMIT 10 Denne spytter ut de 10 første radene. På Side 2 blir spørringen: SELECT * FROM table LIMIT 10, 10 Denne spytter ut 10 rader, men med 10 raders "offset" hvis du skjønner. Side 3: SELECT * FROM table LIMIT 20, 10 Du beregner ut offset ved å gange antall rader du vil vise pr. side med parameteren page. Request.QueryString("page") * 10 Lenke til kommentar
Manfred Skrevet 2. august 2007 Del Skrevet 2. august 2007 MSSQL har ingen "LIMIT" keyword. Her må du bruke TOP. SELECT TOP 5 * FROM... Dessverre kan man ikke velge et offset på samme måte som med LIMIT, så her må man være litt mer kreativ. Enten bruker du siste ID som parameter. Slik at side 2 f.eks får følgende adresse: minSide.asp?startat=20 med tilhørende sql: "SELECT TOP 10 * FROM Tabell WHERE pk_id > " + Request.QueryString["startat"] eller så må du løse det programmatisk, ved at første siden henter f.eks TOP 10, andre TOP 20, osv... Og så må du da "hoppe over" alle de recordsa du ikke skal vise på siden, ved hjelp av en test i en løkke. ...hvis dette gjorde ting litt klarere. Lenke til kommentar
CronoMan Skrevet 14. september 2007 Del Skrevet 14. september 2007 (endret) http://www.planet-source-code.com/vb/scrip...Id=850&lngWId=5 http://www.select-sql.com/mssql/how-to-mak...mssql-2005.html <-- den her er vel litt mer ordentlig begge ser nasty ut men... Endret 14. september 2007 av CronoMan Lenke til kommentar
834HF42F242 Skrevet 20. september 2007 Forfatter Del Skrevet 20. september 2007 (endret) Løsning: <Putt inn SQL-spørringen> ' Open the recordset. objRst.Open strSQL objRst.CacheSize = objRst.PageSize intPageCount = objRst.PageCount intRecordCount = objRst.RecordCount If CInt(intPage) > CInt(intPageCount) Then intPage = intPageCount If CInt(intPage) <= 0 Then intPage = 1 If intRecordCount > 0 Then objRst.AbsolutePage = intPage intStart = objRst.AbsolutePosition If CInt(intPage) = CInt(intPageCount) Then intFinish = intRecordCount Else intFinish = intStart + (objRst.PageSize - 1) End if End If[ For intRecord = 1 to objRst.PageSize <Hent ut variabler her> objRst.MoveNext If objRst.EOF Then Exit for Next objRst.Close Endret 20. september 2007 av neitakk Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå