레코드 세트 페이징 중 음수의 현상을 위해, 나는 많은 사람들 이이 문제를 발견했으며 때로는 바이두와 구글이 당황하지 않을 것이라고 생각합니다.
음수는 주로 커서 유형과 관련이 있습니다. (예를 들어 Conn.asp 링크 데이터베이스의 파일이 이미 있고 포함되었다고 가정하면 편리합니다.) 이제 예는 다음과 같습니다.
sql = select *에서 id desc '로 조건 순서가 필요에 따라 다시 작성할 수있는 테이블에서
set rs = const.execute (sql) '===이 문장 ===
Rs.Pagesize = 10 '=== 페이지 당 레코드 수는 10 ===입니다.
page = request.querystring (페이지)
page = page = 1 인 경우
isnumeric (페이지)이 아닌 경우 페이지 = 1입니다
page = clng (페이지)
Page <1 인 경우 페이지 = 1입니다
Page> rs.pagecount that = vrs.pagecount
rs.AbsolutePage = 페이지
희미한 c
C = 1
rs.eof 및 c <= rs.pagecount가 아닌 상태에서 수행하십시오
'출력 컨텐츠
C = C+1
rs.movenext
고리
'페이지 링크를 만듭니다
위의 코드에 따르면 레코드 세트 객체는 코드에 의해 직접적으로 이루어집니다. SET RS = CONN.EXECUTE (SQL)는 레코드 세트 객체의 기본 캠페인이 0입니다. 그리고 잠금 유형은 0이며, 읽기 만 읽기 만 읽고 읽기 전용 읽기 전용을 나타내며 읽기 전용 읽기 전용을 나타내며 읽기 만 읽기 만 읽고 읽기 전용 읽기 만 표시 함을 나타냅니다. 읽기 전용 읽기 만 표시하고 읽기 전용 읽기 만 읽기 만 읽고 읽기 전용 읽기 전용을 나타내며 읽기 전용 읽기 전용 읽기 만 표시하며 읽기 전용 읽기 전용은 읽기 전용 읽기 전용을 나타내며 읽기 전용 읽기 전용은 읽기 만 표시하며 읽기 만 읽기 만 읽기 만 읽기 만 읽기 만하면 레코드 세트 객체를 업데이트 할 수 없습니다.
따라서 페이징 중에 음수 숫자가 나타나면 레코드 세트 객체가 위 형식으로 작성되었는지 확인하고 다음을 작성해야합니다.
set rs = server.createobject (adodb.oldset)
Rs.OOPEN SQL, CONN, 1,3
위의 것은 커서가 1이라는 것을 나타냅니다. 이는 앞뒤로 이동할 수 있습니다.
위의 방법에 따르면, 문제는 없지만 보험의 경우 Recionset 페이징의 원칙은 모든 기록을 읽은 후 기록 수를 기준으로하므로 캠페인을 먼저 롤하자 Rs 레벨 후에 다음을 추가하십시오. .pagesize = 10, 두 문장 아래에 다음을 추가하십시오.
Rs.Movelast '커서 끝으로 이동합니다
Rs.MoveFirst '커서 상단으로 이동합니다
레코드 세트의 페이지 매김 원리는 Rs.RecordCount의 값을 얻기 전에 전체 데이터베이스의 레코드를 먼저 읽는 것으로 알려져 있습니다. 이 페이징 방법은 비교적 간단하지만 페이징의 원칙에 따라 데이터베이스 레코드에 많은 레코드가있을 때는 치명적인 단점이 있습니다 실제 프로그래밍 방법. 이제 SQL 쿼리 문에서 페이지 매김을 할 수 있다는 아이디어를 제공합니다.
기사 M의 안개에서 시작하십시오.
선택하다*
From (selectTopn*
(selectTop (m+n-1)*에서 테이블 이름 OrderByIddesc) T1) T2
OrderByIddesc
위의 SQL 문의 경우 오류는 상대적으로 작으며 가장 중요한 것은 효율이 비교적 높다는 것입니다.