제가 만든 asp + sqlserver 페이징 프로그램: 이 프로그램의 특징은 현재 페이지의 기록을 페이지에 드롭하는 것입니다. 성능이 좋고, 코드가 캡슐화되어 있지 않기 때문에 프로그램에서 사용하려면 간략하게 읽어야 합니다. 그런 다음 스스로 설정해야 하는 장소의 의미에 주의를 기울이십시오. 일부는 생략 가능합니다. 일부 매개변수 전달은 생략될 수도 있습니다.
코드는 다음과 같습니다.
'''' Saibei의 Snow 페이징 도구(SQL Server)에는 저장 프로시저가 필요하지 않습니다 -------------- ---
'댓글에 #이 있습니다. ##에는 사용자 설정이 필요합니다.
'파라미터를 통해 전달할 코멘트에 '파라미터 전달**에 대한 설명이 있습니다.
'변수 정의
희미한 tOption '쿼리 조건
희미한 tOrder '문자열 정렬
희미한 tOrderField '주문 필드는 매개변수를 통해 얻을 수 있습니다: order_field
희미한 tOrderDirection '정렬 방향은 매개변수를 통해 얻을 수 있습니다: order_direction
희미한 tPageSize '페이지 크기
Dim tTotalCount '매개변수를 통해 얻을 수 있는 총 레코드 수: t_count
희미한 tPageCount '페이지 수
Dim tCurPage '현재 페이지 번호는 매개변수를 통해 얻을 수 있습니다: page
희미 tTableName '테이블 또는 뷰 이름
희미한 tFieldAlias '줄 번호의 별칭
희미한 tFieldList '필드 목록 쿼리
희미한 tPageField '페이징에 사용되는 필드
희미한 r_count '발견된 레코드 수
set rs=server.createobject("adodb.recordset") '레코드 세트 객체
' 정렬 처리
tOrderField=Request("order_field") '정렬 필드 가져오기(매개변수 전달**)
tOrderDirection=Request("order_dir") '정렬 방향 가져오기(매개변수 전달**)
if(tOrderField="") then tOrderField="item_code" ' ### 기본 정렬 필드 설정
if(tOrderDirection="") then tOrderDirection="asc" ' ### 기본 정렬 방향 설정
'www.downcodes.com
tOrder=" order by " & tOrderField & " " & tOrderDirection & " " '정렬 문자열 생성
'매개변수 정의
tPageSize=find_rs_count ' ### 페이지 크기 설정
tTableName="view_select1" ' ### 테이블 또는 뷰 설정 및 쿼리
tFieldList=" * " ' ### 쿼리할 필드 목록
tPageField="item_code" ' ### 페이징 계산을 위한 기본 키 또는 고유 인덱스 필드 설정
'페이지 처리
tCurPage=Request("page") '현재 페이지 가져오기(매개변수 전달**)
tTotalCount=Request("t_count") '총 페이지 수를 가져옵니다(매개변수 전달**)
if(tCurPage="") then tCurPage=1
if(cint(tCurPage)=0) 그러면 tCurPage=1
if(tPageCount="") 그러면 tPageCount =1
if(cint(tPageCount)=0) then tPageCount=1
' 특정 프로그램에 따라 확실히 달라지는 쿼리 조건을 구성합니다. 하지만 마지막 조건은 "where ???" 여야 합니다.
tOption=" issue_flag='Y'" ' ### 조건 설정
if f_c<>"" then tOPtion= tOPtion & f_c ' ### 조건 설정
if Trim(tOption)="" then
tOption = " where 1=1 " '조건이 없으면 직접 추가하세요.
또 다른
tOption= " 여기서 " & tOPtion
종료하면
'이 페이징 프로그램의 핵심인 쿼리 문자열을 구성합니다. 이 쿼리 문자열은 현재 페이지만 다운로드하는 데 필요한 레코드입니다.
if(tCurPage>1) 그러면
conStr="select top " & tPageSize & " " & tFieldList & " from " & tTableName & tOption
conStr =conStr & " and " & tPageField & " not in(select top " & tPageSize*(tCurPage-1) & " " & tPageField & " from " & tTableName & tOption & " " & tOrder & ") " & tOrder
또 다른
conStr="select top " & tPageSize & " " & tFieldList & " from " & tTableName & tOption & " " & tOrder
종료하면
'메인 쿼리를 실행하고 해당 레코드 세트를 얻습니다.
ConnDataBase() 호출 ' ### 데이터베이스 연결 설정
rs.cursorlocation=3
rs.open conStr,conn,3,1 '쿼리 실행
r_count = rs.recordcount
'총 레코드 개수를 조회하지 않고 총 레코드 개수가 페이지 크기를 초과하는 경우 현재 조건에서 총 레코드 개수를 조회합니다.
if(r_count>=tPageSize 또는 tCurPage>1) 및 tTotalCount=0 then
set rr=conn.execute("" & tTableName & " " & tOption에서 개수(*) 선택)
tTotalCount=rr(0)
rr.닫기()
setrr=아무것도 없음
종료하면
if(cint(tTotalCount)=0) then tTotalCount=r_count '총 레코드 수가 0이면 현재 차이 레코드의 레코드 수를 총 레코드 수로 설정합니다. 이는 현재 총 레코드 수가 다음보다 작음을 나타냅니다. 페이지 크기
'페이지 크기와 총 레코드 수를 사용하여 페이지 수를 계산합니다.
if(cint(tTotalCount)>cint(tPageSize)) 그러면
tPageCount=cint((cint(tTotalCount) cint(tPageSize)))
if(cint(tTotalCount) mod cint(tPageSize))>0 then
t페이지카운트 =t페이지카운트 +1
종료하면
종료하면
tCurPage=cint(tCurPage)
tPageCount=cint(tPageCount)
'------------------------------------------------ - ------
이것은 전체 코드입니다. 관심 있는 친구는 이를 연구하거나 캡슐화하고 페이징 탐색 및 기타 방법을 추가할 수 있습니다. 어쨌든 이 코드가 모든 사람에게 유용할 수 있기를 바랍니다.