ADO가 데이터베이스에 액세스 할 때 Pagination 디스플레이는 무엇입니까? 많은 웹 사이트에서 전자 게시판 보드 프로그램을 사용한 경우 페이지의 읽기 속도를 향상시키기 위해 전자 게시판 보드 프로그램이 일반적으로 한 페이지에 모든 게시물을 나열하지는 않지만 대신 여러로 나뉘어져 있음을 알아야합니다. 표시 할 페이지 및 각 페이지에는 20과 같은 특정 수의 게시물이 표시됩니다. 페이지 매김 디스플레이를 구현하는 방법을 알고 싶으십니까? 이 기사를 읽으십시오!
"Dynamic 웹 사이트 디자인의 18 개 무술"은 첫 번째 문제 이후로 친구들과 함께 반년을 보냈습니다. 그리고 연습. 나는 이미 ASP의 내장 객체와 ActiveX 구성 요소를 사용하여 일부 기본 ASP 응용 프로그램을 작성합니다. 친구들로부터받은 편지에서 우리는 모든 사람의 ASP 기술이 끊임없이 향상되고 있다고 느낄 수 있습니다. 최근에 많은 친구들이 저에게 편지를 썼으며 실제 사용에서 ASP의 몇 가지 예를 쓸 수 있기를 바랍니다. 따라서이 문제에서 시작하여 ASP 기본 지식을 소개하고 학습하는 것에서 ASP의 실제 운영에 대한 논의 및 심화로 "Dynamic Website-Asp Edition의 18 개 무술"의 위치를 전환하기로 결정했습니다. 친구들의 요청에 따라이 문제에서 ADO 데이터베이스 페이징에 액세스 할 때 표시하는 방법에 중점을 둘 것입니다.
ADO가 데이터베이스에 액세스 할 때 Pagination 디스플레이는 무엇입니까? 많은 웹 사이트에서 전자 게시판 보드 프로그램을 사용한 경우 페이지의 읽기 속도를 향상시키기 위해 전자 게시판 보드 프로그램이 일반적으로 한 페이지에 모든 게시물을 나열하지는 않지만 대신 여러로 나뉘어져 있음을 알아야합니다. 표시 할 페이지 및 각 페이지에는 20과 같은 특정 수의 게시물이 표시됩니다. 이것은 데이터베이스 쿼리의 페이지 매김 디스플레이입니다.
그렇다면 데이터베이스의 쿼리 결과를 어떻게 페이지를 찍을 수 있습니까? 실제로 여러 가지 방법이 있지만 두 가지 주요 방법이 있습니다.
1. 쿼리 조건을 한 번에 레코드 세트로 충족시키는 데이터베이스의 모든 레코드를 읽은 다음 ADO 레코드 세트 객체를 통해 PAGING 처리를 지원하는 몇 가지 속성이 제공됩니다. 페이징 처리를 관리하기위한 (페이지 번호) 및 AbsolutePage (Absolute Page).
2. 고객의 지침에 따라 지정된 레코드 수를 읽고 매번 쿼리 조건을 충족하는 레코드에서 표시해야합니다.
두 사람의 주요 차이점은 전자가 한 번에 모든 레코드를 메모리로 읽은 다음 페이지 매김 디스플레이의 영향을 달성하기위한 지침에 따라 판단과 분석을 한 반면 후자는 지침에 따라 판단을 내리고 설정한다는 것입니다. 쿼리 조건을 충족시키기 위해 지정된 번호는 메모리로 읽히므로 Paglination 디스플레이의 기능을 직접 달성합니다.
데이터베이스의 레코드 수가 수만 명 이상에 도달하면 첫 번째 방법의 실행 효율이 두 번째 방법의 실행 효율보다 상당히 낮을 것이라고 분명히 느낄 수 있습니다. 모든 고객이 페이지를 쿼리 할 때 모든 결과가 필요하기 때문입니다. 기준을 충족하는 레코드는 서버 메모리에 저장된 다음 페이징 등으로 처리됩니다. 그러나 서버의 데이터베이스의 레코드 수와 동시에 온라인으로 사람들의 수가 크지 않으면이 시점에서 첫 번째 방법은 일반적으로 사용됩니다. 첫 번째 메소드의 ASP 프로그램은 비교적 쓰여져 있습니다. 두 번째 방법은 훨씬 간단하고 명확합니다.
여기서 저자는 공통 ASPBBS 프로그램을 예로 들어 BBS 프로그램에서 Pagination Display 기능을 구현하는 방법을 분석합니다. 따라서 많은. 따라서 다음 프로그램 예제는 이전에 사용한 첫 번째 페이지 매김 디스플레이 방법입니다.
ADO가 데이터베이스에 액세스 할 때 Pagination 표시는 실제로 레코드 세트의 레코드를 작동하는 것입니다. 따라서 먼저 Reordset 객체의 속성과 방법을 이해해야합니다.
BOF 속성 : 현재 표시기는 레코드 세트와의 첫 번째 트랜잭션을 나타냅니다.
EOF 속성 : 현재 표시기는 레코드 세트와의 마지막 트랜잭션을 나타냅니다.
이동 방법 : 레코드 세트에서 메트릭을 레코드로 이동하십시오.
AbsolutePage 속성 : 어떤 페이지에있는 레코드의 현재 위치를 설정합니다.
PageCount 속성 : 레코드 세트 객체에 포함 된 데이터의 페이지 수를 표시합니다.
Pagesize 속성 : 레코드 세트 객체의 각 페이지에 표시된 레코드 수를 표시합니다.
RecordCount 속성 : RecordSet 객체의 총 레코드 수를 표시합니다.
이러한 중요한 속성과 방법을 자세히 살펴 보겠습니다.
1. BOF 및 EOF 속성
일반적으로 ASP 프로그램에 코드를 작성하여 BOF 및 EOF 속성을 확인하여 표시기가 BOF 및 EOF 속성을 사용하는 레코드 세트의 위치를 알 수 있습니다. 레코드 세트 객체의 범위가 초과되었습니다.
예를 들면 : < %rs.eof가 아닌 경우 ... %>
< %가 아닌 경우 (rs.bof 및 rs.eof) %>
현재 레코드 위치가 레코드 세트 객체에있는 경우
첫 번째 줄이 기록되면 Bof 속성은 true를 반환하고 그렇지 않으면 거짓입니다.
현재 레코드 위치가 레코드 세트 오브젝트의 마지막 행 뒤에있는 경우, EOF 속성은 true를 반환하고 그렇지 않으면 false를 반환합니다.
BOF와 EOF는 모두 false입니다. 표시기가 레코드 세트에 있음을 의미합니다.
BOF는 사실입니다. 현재 표시기는 레코드 세트에 대한 첫 번째 레코드를 나타냅니다. EOF는 사실입니다. 현재 표시기는 레코드 세트에 대한 마지막 레코드를 나타냅니다.
BOF와 EOF는 모두 사실입니다. 레코드 세트에는 레코드가 없습니다.
2. 방법을 움직입니다
이동 방법을 사용하여 메트릭을 레코드 세트의 레코드로 이동할 수 있으며 구문은 다음과 같습니다.
Rs. Move NumRecords, 시작
여기서 RS는 현재 레코드 위치가 이동하고자하는 레코드 세트 객체를 나타내며, 현재 레코드 위치의 움직임 수를 설정하는 옵션입니다 시작 태그.
모든 레코드 객체는 이동 방법이 0보다 큰 경우, 현재 레코드 위치가 시작되면 이동이 발생합니다 방법, 오류가 생성됩니다.
MoveFirst Method : 현재 레코드 위치를 첫 번째 레코드로 이동하십시오.
Movelast Method : 현재 레코드 위치를 마지막 레코드로 이동하십시오.
MOVENEXT 메소드 : 현재 레코드 위치를 다음 레코드로 이동하십시오. MovePrevious Method : 현재 레코드 위치를 이전 레코드로 이동하십시오.
[n] 메소드 이동 : 색인을 nth 펜 레코드로 이동하고 N은 0부터 시작됩니다.
3. AbsolutePage 속성
AbsolutePage 속성은 Pageize 속성을 사용하여 Recordset 객체를 논리 페이지로 나누고 각 페이지의 레코드 수는 Pagesize입니다. Pagesize Records). 모든 데이터 제공 업체 가이 속성을 지원하는 것은 아니므로 여기에서 사용할 때주의해야합니다.
AbsolutePosition 속성과 동일하게 AbsolutePage 속성은 1로 시작합니다. 현재 레코드가 레코드 세트의 첫 번째 행 인 경우 AbsolutePage는 1입니다. AbsolutePage 속성은 지정된 페이지의 첫 번째 행 레코드 위치로 이동하도록 설정할 수 있습니다.
4. Absoluteposition 속성
레코드 세트에서 메트릭의 현재 위치를 결정 해야하는 경우 AbsolutePosition 속성을 사용할 수 있습니다.
AbsolutePosition 속성의 값은 첫 번째 트랜잭션에 비해 현재 지표의 위치, 즉 1부터 시작하는 첫 번째 트랜잭션의 위치는 1입니다.
레코드 세트에 액세스 할 때 레코드 세트가 매번 동일한 순서로 나타날 것이라는 보장은 없습니다.
AbsolutePosition을 활성화하려면 먼저 사용자 커서 (포인터)를 사용하도록 설정해야하며 ASP 코드는 다음과 같습니다.
rs2.cursorlocation = 3
5. PageCount 속성
PageCount 속성을 사용하여 레코드 세트 객체에 포함 된 데이터의 페이지 수를 결정하십시오. 여기의 페이지는 데이터 레코드 모음이며, 그 크기는 Pageize 속성 설정과 동일합니다. 마지막 페이지의 레코드 수가 페이지 규모의 값보다 적 으면 마지막 페이지는 PageCount 페이지로 간주됩니다. . 모든 데이터 제공 업체 가이 속성을 지원하는 것은 아닙니다.
6. Pagesize 속성
Pagesize 속성은 데이터베이스를 사용할 때 Ado Paginates를 결정하는 핵심입니다. 페이지 크기를 설정하고 생성하여 AbsolutePage 속성을 다른 논리 페이지의 첫 번째 레코드로 옮길 수 있습니다. Pagesize 속성은 언제든지 설정할 수 있습니다.
7. RecordCount 속성
이것은 또한 매우 일반적이고 중요한 속성입니다. 예 : < %totle = rs.recordCount %>
위의 레코드 세트 객체의 특성과 방법을 이해 한 후에는 페이지 매김 디스플레이의 목적을 달성하기 위해이를 사용하는 방법을 고려해 봅시다. 먼저 Pagesize 속성에 대한 값을 설정하여 레코드 그룹에서 가져온 페이지를 지정한 다음 레코드 수를 결정합니다 표시된 페이지를 얻으려면 최종적으로 지정된 페이지에 액세스 할 수 있습니다. 매우 복잡하지 않은 것 같습니다.
우리는 다음과 같은 간단한 BBS 응용 프로그램을 구축했습니다. 데이터베이스에는 다음과 같은 5 개의 필드가 있습니다. 게시 시간. 데이터베이스의 DSN은 BBS입니다. 쉽게 통화 할 수 있도록 Showlist ()라는 프로세스에 게시물 페이징을 표시하는 모든 단계를 담았습니다. 절차는 다음과 같습니다.
'---- BBS 쇼 포스트 페이징 ---
< %하위 쇼리스트 () %>
< %
pgsz = 20 'set switch, 각 페이지에 표시된 게시물 수를 지정하고 기본값은 페이지 당 20 개의 게시물입니다.
set conn = server.createobject (adodb.connection)
set rs = server.createobject (adodb.recordset)
sql = select*에서 id desc의 메시지 주문
'모든 게시물을 쿼리하고 Post ID에 의해 역순으로 정렬됩니다.
conn.open bbs
Rs.Opensql, Conn, 1,1
rs.recordCount = 0 인 경우
response.write <p> <center> 죄송합니다. 데이터베이스에는 관련 정보가 없습니다! < /센터> < /p>
또 다른
rs.pagesize = cint (pgsz) 'Pagesize 속성의 값 설정
Total = int (rs.recordCount / pgsz * -1) * -1 '표시 할 수있는 총 페이지 수를 계산합니다.
pageno = 요청 (pageno)
pageno = 그런 다음
pageno = 1
또 다른
pageno = pageno+1
pageno = pageno-1
끝 If
scrollaction = request (scrollaction)
scrollaction = 이전 페이지 인 경우
pageno = pageno-1
끝 If
scrollaction = 다음 페이지 인 경우
pageno = pageno+1
끝 If
Pageno <1이면
pageno = 1
끝 If
n = 1
rs.AbsolutePage = pageno
응답. write <center>
위치 = rs.pagesize*pageno
pagebegin = position-rs.pagesize+1
위치 <rs.recordCount 인 경우
pagend = 위치
또 다른
pagend = rs.recordCount
끝 If
response.write <p> <font color = 'Navy'> <b> 데이터베이스 쿼리 결과 : < /b>
Response.write (조건을 충족하는 & rs.recordCount 및 정보가 있습니다.
응답 <테이블 너비 = 600 테두리 = 1 CellPadding = 4 Cellspacing = 0 bgcolor =#ffffff>
응답 <tr bgcolor =#5fb5e2> <font size = 2> <td> <b> 테마 < /b> < /td> <td> <b> 사용자 < /b> < /td> <td> < B> 이메일 < /b> < /td> <td> <b> 게시 날짜 < /b> < /td> < /font> <tr bgcolor =#ffffff>
하지 않으면 (RS는 아무것도 아닙니다)
RowCount = Rs.Pagesize
rs.eof 및 rowcount> 0이 아닌 상태에서 수행하십시오
그렇다면 n = 1이면
응답 <tr bgcolor =#ffffff>
또 다른
응답 <tr bgcolor =#eeeee>
끝 If
n = 1-n %>
<td> <span style = font-size : 9pt> <a href = 'view.asp? key = < % = rs (id) %>'> < % = rs (주제) %> < /a> < /< % 스팬> </td>
<td> <span style = font-size : 9pt> < % = rs (이름) %> < /a> < /span> < /td>
<td> <span style = font-size : 9pt> <a href = mailto : < % = rs (이메일) % >> < % = rs (이메일) %> < /a> < /span> < /td>
<td> <span style = font-size : 9pt> < % = rs (postdate) %> < /span> < /td>
< /tr>
< %
RowCount = RowCount -1
rs.movenext
고리
rs = rs.nextrecordset을 설정합니다
고리
conn.close
RS = 아무것도 설정하지 않습니다
Conn = 아무것도 설정하지 않습니다
%>
< /테이블>
<form 메소드 = getAction = list.asp>
<입력 유형 = 숨겨진 이름 = pageno 값 = < % = pageno % >>
< %
pageno> 1이면
response.write <입력 유형 = 제출 이름 = 'scrollaction'value = 'previous page'>
끝 If
rowCount = 0이고 pageno <> 인 경우 총계입니다
response.write <입력 유형 = 제출 이름 = 'scrollaction'value = 'next page'>
끝 If
응답 < /form>
끝 If
%>
< % end sub %>
나는 모든 사람이 위의 프로그램을 완전히 이해할 수 있어야한다고 생각하므로 저자는 여기에서 자세히 설명하지 않을 것입니다. 이 프로그램에서는 작은 트릭이 사용되었다는 점은 <입력 유형 = 숨겨진 이름 = pageno value = < % = pageno % >>에 주목할 가치가 있습니다. 이것은 ASP 파일을 호출 할 때마다 데이터를 전달하는 데 사용되는 비밀 구절입니다. 우리가 프로그램을 호출 할 때마다 현재 페이지 번호를 나타내는 매개 변수를 전달해야하며, 세션을 사용하는 것을 생각할 수 있지만 시스템 자원을 저장하는 측면에서는 숨겨진 양식을 사용하여 데이터를 전달하면 더 나은 결과를 얻을 수 있습니다.
좋아,이 기사에 나열된 프로그램을 완전히 이해하지 못하면 VBScript의 구문을 살펴보십시오. 더 나은 제안이 있으시면 편지를 보내주세요 :)