Avatar billede ndh Nybegynder
20. juli 2000 - 11:35 Der er 6 kommentarer

Paging

Hvordan laver jeg en paging af et recordset? Se nedenstående kode. Hvad gør jeg galt?

<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat</title>

<body background="grey_bricks1.gif" text="#FFFFFF">


<%

strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    Response.Clear
    Response.Redirect("search.htm")
Else

    strKeyword = Replace(strKeyword,"'","''")
End If

intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If


strSQL = "SELECT ID, f1, f2, f3 FROM Tabel WHERE"
strSQL = strSQL & " (f1 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (f2 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (f3 LIKE '%" & strKeyword & "%')"


strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.Mappath ("Base.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Set rs = myConn.Execute(strSQL)

If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 10
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
Do While Not rs.EOF And intRecCount > 0


countSQL = "SELECT Count(*) As found from Tabel WHERE"
countSQL = countSQL & " (f1 LIKE '%" & strKeyword & "%')"
countSQL = countSQL & " OR (f2 LIKE '%" & strKeyword & "%')"
countSQL = countSQL & " OR (f3 LIKE '%" & strKeyword & "%')"

Set count = myConn.Execute(countSQL)

    Response.Write "<p><b><font face=Arial><font size=4><font color=#FFFFFF>Din søgning resulterede i "&count("found")&" hits</b></p>"
    Response.Write "<p><b><font face=Arial><font size=10><font color=#FFFFFF>Søgeresultat</b></p>"
    Response.Write "<font color=#FFFFFF><table border=8>"
    Response.Write "<cellPadding=8>"
    Response.Write "<cellSpacing=8>"
    Response.Write "<tr><th>f1</th><th>f2</th><th>f3</th></tr>"
Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("f1") & "</td>"
        Response.Write "<td>" & rs("f2") & "</td>"
        Response.Write "<td>" & rs("f3") & "</td>"</tr>"
        intRecCount = intRecCount - 1
rs.MoveNext
Loop
End If
Response.Write "</table>"
rs.Close
Set rs = Nothing
Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
Response.Write "<a href=paging.asp?page=" & intNum & ">" & intNum & "</a> "
Next
Response.Write "<p>"
If Clng(intPage) > 1 Then
Response.Write "<a href=paging.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
Response.Write "&lt;&lt;"
End If
Response.Write "&nbsp;"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write "<a href=paging.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
Response.Write "&gt;&gt;"
End If

   
rem Else

rem    Response.Write "<p>Der er ikke fundet nogle hits i denne søgning</p>"
rem End If

rem myConn.Close
rem Set myConn = Nothing
%>








</body></html>

Avatar billede plinnet Nybegynder
20. juli 2000 - 12:34 #1
1. hvorfor countSQL?
Brug:
intantalcount = rs.RecordCount

Du skal skrive resultatet ud på siden med en for-løkke:

For i=1 to rs.PageSize
....
...
rs.movenext
next

Hvad får du af fejl?

Eller hvad går galt?
Avatar billede ndh Nybegynder
20. juli 2000 - 12:43 #2
Prøv at uddybe

Avatar billede plinnet Nybegynder
20. juli 2000 - 12:52 #3
Hvorfor virker det ikke hvad sker der skrivers der ikke noget eller hvad?
eller kan du ikke få de rigtige sider?

Hvad kommer der egentlig ud på skærmen?

Det vil gøre det meget nemmere at hjælpe.
Jeg kan give diverse råd, men det er hurtgere at du fortæller hvad der sker. Ellers skal jeg til at afprøve din koden,men jeg har ikke databasen!
Avatar billede plinnet Nybegynder
20. juli 2000 - 13:25 #4
Fortsat

Umiddelbart ville jeg udskifte dette stykke af koden:

countSQL = "SELECT Count(*) As found from Tabel WHERE"
countSQL = countSQL & " (f1 LIKE '%" & strKeyword & "%')"
countSQL = countSQL & " OR (f2 LIKE '%" & strKeyword & "%')"
countSQL = countSQL & " OR (f3 LIKE '%" & strKeyword & "%')"

Set count = myConn.Execute(countSQL)

    Response.Write "<p><b><font face=Arial><font size=4><font color=#FFFFFF>Din søgning resulterede i "&count("found")&" hits</b></p>"
    Response.Write "<p><b><font face=Arial><font size=10><font color=#FFFFFF>Søgeresultat</b></p>"
    Response.Write "<font color=#FFFFFF><table border=8>"
    Response.Write "<cellPadding=8>"
    Response.Write "<cellSpacing=8>"
    Response.Write "<tr><th>f1</th><th>f2</th><th>f3</th></tr>"
Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("f1") & "</td>"
        Response.Write "<td>" & rs("f2") & "</td>"
        Response.Write "<td>" & rs("f3") & "</td>"</tr>"
        intRecCount = intRecCount - 1
rs.MoveNext
Loop


Med dette:

intantal = rs.RecordCount

    Response.Write "<p><b><font face=Arial><font size=4><font color=#FFFFFF>Din søgning resulterede i "&intantal&"hits</b></p>"
    Response.Write "<p><b><font face=Arial><font size=10><font color=#FFFFFF>Søgeresultat</b></p>"
    Response.Write "<font color=#FFFFFF><table border=8>"
    Response.Write "<cellPadding=8>"
    Response.Write "<cellSpacing=8>"
    Response.Write "<tr><th>f1</th><th>f2</th><th>f3</th></tr>"
For i = 1 to rs.PageSize
        Response.Write "<tr><td>" & rs("f1") & "</td>"
        Response.Write "<td>" & rs("f2") & "</td>"
        Response.Write "<td>" & rs("f3") & "</td>"</tr>"
        intRecCount = intRecCount - 1
rs.MoveNext
Next

Hilsen  Linnet
Avatar billede ndh Nybegynder
20. juli 2000 - 15:57 #5
Jeg har ændret koden til følgende:
html>
<head>
<title>Resultat af søgning</title>
</head>
<body BGCOLOR="#003050" TEXT="#E6E8FA" VLINK="#FCCF03" LINK="#FCCF03" ALINK="#06438A" leftmargin="25">

<font size=3 color="#FCCF03"><b>Resultat af søgning<br></b>
</font><br><br>

<%

strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then

Response.Clear
    Response.Redirect("search.htm")
Else
    strKeyword = Replace(strKeyword,"'","''")
End If

intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Efternavn FROM Tabel WHERE"
strSQL = strSQL & " (Efternavn LIKE '%" & strKeyword & "%')"

strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("Borgerdatabase.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 10
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
Do While Not rs.EOF And intRecCount > 0
Response.Write rs("Efternavn") & "<br>"
intRecCount = intRecCount - 1
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
Response.Write "<a href=search.asp?page=" & intNum & ">" & intNum & "</a> "
Next
Response.Write "<p>"
If Clng(intPage) > 1 Then
Response.Write "<a href=search.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
Response.Write "&lt;&lt;"
End If
Response.Write "&nbsp;"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write "<a href=search.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
Response.Write "&gt;&gt;"
End If
%>
</body></html>

MEN FÅR NU NEDENSTÅENDE FEJL, HVORFOR - HVAD GØR JEG GALT



Response-objekt fejl 'ASP 0159 : 80004005'

Bufferlageret er deaktiveret

/search.asp, linje 17

Bufferlageret skal være aktiveret
Avatar billede stig3 Mester
21. juli 2000 - 11:11 #6
Fik du fjernet:
<% Response.Buffer = True %>

Hvis den ikke allerede står i toppen så sæt den ind igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester