---
title: "Implementera Sökkod i Pagingkod."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/44581-implementera-sökkod-i-pagingkod"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Lazerzubb"
published: "2002-05-26T15:17:53.000Z"
updated: "2002-05-26T15:17:53.000Z"
replies: 0
views: 189
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/44581-implementera-sökkod-i-pagingkod"
---

# Implementera Sökkod i Pagingkod.

## #1 — Lazerzubb, 2002-05-26T15:17Z

Ja det är lite mycket kod, men kan inte asp så tar hjälp av proffsen.
Jag skulle behöva hjälp med att implementera min sökkod i Paging koden, så att allt visas rätt.
Har denna sökkod:

\<%
Response.Cachecontrol="Public"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=D:/search.mdb"
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT \* FROM search1 WHERE " 
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')"
'sökfältets värde
mQuery=request.form("fsearch")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1). 
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if

next

'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 \<\> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if

'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")

'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))

'splitta upp i en array
mQueryArr=split(mQuery," ")

'skapa arrayer för AND, AND NOT och OR. 
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)

'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next

'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery\<\>"" then 
mQuery="(" & mQuery & ")"
if ubound(mAndArr) \> -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery\<\>"" and ubound(mNotArr) \> -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")

set rs=Connection.execute (mQuery)

%\>
\<%
If rs.EOF Then
Response.write("We searched and didn't find what you wanted...")
Else
%\>
\<%
do until rs.eof
if bgcolor = "#FFFFFF" then bgcolor = "#FFCC66" Else bgcolor = "#FFFFFF" End if
%\>
    \<tr\>
\<td width="243" height="1" bgcolor="\<%=bgcolor%\>"\>\<font face="Verdana" size="1" color="#000000"\>\<%=rs("ID")%\> \<a href="detail.asp?id=\<%=rs("ID")%\>"\>\<% Response.Write "" & Split(rs("country"), ";")(0)%\>, \<%=rs("province")%\>, \<%=rs("city")%\> \</a\>\</font\>\</td\>
\<td width="145" height="1" bgcolor="\<%=bgcolor%\>"\>\<font face="Verdana" size="1" color="#000000"\>\<%=rs("bedf")%\>\</font\>\</td\>
\<td width="40" height="1"  bgcolor="\<%=bgcolor%\>"\>\<font face="Verdana" size="1" color="#000000"\>\<%=rs("xbed")%\>\</font\>\</td\>
\<td width="192" height="1" bgcolor="\<%=bgcolor%\>"\>\<font face="Verdana" size="1" color="#000000"\>High: \<%=rs("high")%\>\<br\>Low: \<%=rs("low")%\>\</font\>\</td\>
    \</tr\>
    \<%
rs.MoveNext
Loop
End If
rs.close
set rs=nothing
Connection.close
set Connection=nothing
%\>

/////////////////////////////////////////////////////////////////////////////
Pagingkoden:
\<% @ LANGUAGE="VBScript" %\>

\<%

' Good Things To Do ™
Option Explicit
Response.Buffer = True

' Constants we'll use for opening the recordset. 
Const adOpenForwardOnly = 0
Const adLockReadOnly = 1
Const adUseClient = 3
Const adCmdText = 1 

' connection object, recordset, connection string, SQL string. I'll leave you to guess which...
Dim conn, rs, connString, qString

' Open the database connection
connString = "driver={Microsoft Access Driver (\*.mdb)};dbq=D:/search.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connString

%\>
\<HTML\>
\<HEAD\> \<TITLE\>Paging\</TITLE\> \</HEAD\>
\<BODY\>
\<%
' Variables for the page number we want to show, and the total number of pages
Dim mypage, numpages
' Variables for the total number of records, and the number of records we should show on one page
Dim numrecs, pagesize

' Get the page number we need to display from Form or QueryString
mypage = CInt( Request("page") )
' If we aren't given one display page 1
If mypage=0 Then mypage=1 

' Get the requested number of records per page
pagesize = 10

' The code we need to set up a recordset object for paging
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.PageSize = pagesize
rs.CacheSize = pagesize
rs.CursorLocation = adUseClient

' Open the recordset
qString = "SELECT \* FROM search1"
rs.Open qString, conn, adOpenForwardOnly, adLockReadOnly, adCmdText
' Get the number of pages and records 
numpages = rs.PageCount
numrecs = rs.RecordCount
' Just in case we have a bad request
If mypage \> numpages Then mypage = numpages 
If mypage \< 1 Then mypage = 1
' This line sets the current page
rs.AbsolutePage = mypage

' Output the total number of records in the recordset
Response.Write("\<P\> \<B\>" & numrecs & " records found.\</B\>" )
' Write the current page number and number of pages (eg "Page 4 of 7")
Response.Write("\<BR\> Page " & mypage & " of " & numpages & "\</P\>")

' Center align the display of records and links
Response.Write("\<CENTER\>")

' Loop through the records for this page writing each on a new line
Dim i
For i=1 To pagesize
  ' Make sure we don't go past the last record
  If NOT rs.EOF Then
    ' Write a couple of fields from each record separated with a \|
    Response.Write(rs("country") & " \| " & rs("city") & " \<BR\>")
    ' Point to the next record
    rs.MoveNext
  End If
Next

Response.Write("\<P\>")

' Loop through the number of pages writing a link for each
Dim x, lb, ub 
For x=1 To numpages
  ' lb is the lowest record number on that page, ub is the highest 
  lb = (x-1) \* pagesize + 1
  ub = x \* pagesize
  ' Makes sure the final link doesn't extend past to the # of records
  If ub \> numrecs Then ub = numrecs
  ' Don't display the current page as a hyperlink
  If x \<\> mypage Then
    ' Example output: \<A HREF=paging.asp?page=4;recs=25\>75-100\</A\>
    Response.Write("\<A HREF=paging.asp?page=" & x & "&recs=" & pagesize & "\>" & lb & "-" & ub & "\</A\>")
  Else
    ' The active page
    Response.Write(lb & "-" & ub)
  End If
  ' Writes \| as a separator if we're not at the last link
  If x \<\> numpages Then Response.Write(" \| ")
Next

Response.Write("\</CENTER\>")

' Clean-up
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing 

%\>

Permalänk: https://www.webforum.nu/p/44581

---

Tråden på webben: https://www.webforum.nu/amne/asp/44581-implementera-sökkod-i-pagingkod
