Just nu i M3-nätverket
Gå till innehåll

recordset


zupermac

Rekommendera Poster

Tja,

 

jag hämtar data från en Oracledatabas som pressenteras på en webbsida mha. asp. det är inga problem så långt, men det ligger ungefär 60000 poster i den och jag vill bara visa 100 åt gången...

 

allstå, när användaren söker i databaen ska det vara visas de 100 första, sedan om användaren klickar på en länk som leder till 100 nästa (101- 200)... och nästa gång ska användaren kunna klicka igen och få ytterliggare 100 nya... hur gör jag för att lösa detta problem. det ska även gå att klicka sig tillbaka 100 poster.. jag tror att det finns en funktion som fixar detta, men vet inte hur jag ska göra...

 

hygglo, hjälp mig..

 

Länk till kommentar
Dela på andra webbplatser

Hej hej!

Det du vill göra kallas för paging. Jag har plockat fram lite länkar som du kan ha nytta av. Lycka till!

 

http://www.aspfree.com/authors/bipin/adorecordsetpaging.asp

http://www.aspsidan.nu/default.asp?page=readArticle&menu=2&aId=9

/ Kristoffer

Windows kunde inte hitta något tangentbord. Tryck F1 för att försöka igen eller F2 för att avbryta.

 

Länk till kommentar
Dela på andra webbplatser

Om du bara vill visa 100 av de 6000 posterna så är det otroligt dumt att skicka med all 6000 posterna till ett recordset på klientsidan och sedan där endast visa 100 poster.

 

Har läst att ADO skall vara så smart att det inte hämtar alla 6000 posterna om man använder sig av pagesize men har också läst att de gör det, så för att vara säker, så gör inte så.

 

Utan redan på serversidan så plockar du ut de 100 poster som du vill ha och låter resterande 5900 poster finnas kvar på servern.

 

I MS SQL server är detta lite jobbigt men i Oracle så finns kommandot ROWNUM som (om jag inte missuppfattat det kommandot) borde fixa det till dig.

 

Typ så här:

SELECT * FROM [tabell] WHERE ROWNUM > 100 AND ROWNUM < 200

Eller så fungerar kanske BETWEEN

SELECT * FROM [tabell] WHERE ROWNUM BETWEEN 100 AND 200

 

Detta skall då hämta ut posterna 100 till 200 från din databas, en ORDER BY skulle dock vara på sin plats då order inte garanters om man inte har order by med i en SQL sats.

 

Om inte ROWNUM fungerar som kan man använda en temptabell för att lösa det, det står på 4guysfromrolla.com men jag kan inte hitta det just nu.

 

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Länk till kommentar
Dela på andra webbplatser

så här blev det..

 

' kollar om användaren har kört frågan

If m_intPageId = 1 then

 

Set ConnectMetz = Server.CreateObject("ADODB.Connection")

 

Set RecSetMetz = Server.CreateObject("ADODB.RecordSet")

ConnectMetz.Open "DSN=Metz; SERVER=Metz"

 

SQLFraga "SELCET * FROM blablabla"

 

RecSetMetz.cursorlocation = 3

RecSetMetz.Open SQLFraga, ConnectMetz

RecSetMetz.pagesize = 100

RecSetMetz.absolutepage = m_intPageId

 

Set Session("RecSet") = RecSetMetz

postNr = 0

 

Else

Set RecSetMetz = Server.CreateObject("ADODB.RecordSet")

Set RecSetMetz = Session("RecSet")

RecSetMetz.absolutepage = m_intPageId

postNr = m_intPageId * 100

End If

 

intPages = cint( RecSetMetz.PageCount )

intCurrentPost = 0

 

' kallar på sidförflyttnigsfunktionerna

m_kenta = getFirstLink(m_intPageId)

m_jony = getPreviousLink( m_intPageId )

m_nalle = getNextLink( m_intPageId, intPages )

m_fisen = getPageInfo( m_intPageId, intPages )

 

 

do while not RecSetMetz.EOF and intCurrentPost < RecSetMetz.PageSize

 

jake = intCurrentPost + postNr

 

if jake Mod 2 = 1 then

Response.Write "<tr valign='top' bgcolor='silver'>"

 

else

Response.Write "<tr valign='top' bgcolor='white'>"

end if

 

' ROW Radnummer med början på ett

Response.Write "<td>"

Response.Write jake

Response.Write "</td>"

 

' PART NO Artikelnummer

Response.Write "<td>"

Response.Write RecSetMetz("part")

Response.Write "</td>"

intCurrentPost = intCurrentPost + 1

RecSetMetz.MoveNext

loop

 

If RecSetMetz.EOF Then

ConnectMetz.Close

set ConnectMetz = nothing

End If

 

 

kådden är betydligt mer omfattande än så här, men jag tänkte berätta lite hur det blev.. tack för länkarna..

 

[inlägget ändrat 2003-02-28 08:58:20 av zupermac]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...