Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- sql순위
- XML
- jdbc driver
- MSSQL보안
- tempDB
- 정규식
- join
- sql랭킹
- asp함수
- wap
- javascript 한글입력체크
- 이미지가로길이
- array
- instr
- ERD
- SPLIT
- xmldom
- 한글입력체크
- WML
- 인젝션
- update
- 자바기초
- 이미지세로길이
- injection
- JavaScript
- VarType
- VARIABLE
- sql업데이트
- FileSystemObject
- inner join
Archives
- Today
- Total
3초기억력
ASP - SQL 페이징 처리 함수 본문
<%
'#################################################################################
'# 페이징 관련 함수
'#################################################################################
Dim G_PAGE_SIZE : G_PAGE_SIZE = 10 ' 뿌려질 레코드 개수
Dim G_TOTAL_RECORD ' 전체 레코드 수
'/* 쿼리문 + 페이징 */
Public Function ExecutePage(ByVal pSql, ByVal pPage)
Dim rs : Set rs = Server.CreateObject("ADODB.RecordSet")
Dim strSQL
Dim nPage
Dim cut, l_sql, r_sql
If pPage = "" or isNull(pPage) Then pPage = 1
pSql = Replace(pSql, vbTab, " ") ' 쿼리문의 Tab은 Space로
pSql = Replace(pSql, vbCr, " ") ' 쿼리문의 개행은 Space로
cut = InStr(1, pSql, " TOP ")
' top 절이 없으면 order by에서 오류 - top절 있는지 검사
If cut = 0 Then
cut = InStr(1, pSql, " DISTINCT ")
If cut > 0 Then
' distinct 가 있을 경우
cut = cut + 8
l_sql = Left(pSql, cut)
r_sql = Right(pSql, Len(pSql) - cut - 1)
pSql = l_sql & " TOP 1000000000 " & r_sql
Else
' distinct 가 없을 경우
cut = InStr(1, pSql, "SELECT ")
If cut > 0 Then
cut = cut + 5
l_sql = Left(pSql, cut)
r_sql = Right(pSql, Len(pSql) - cut - 1)
pSql = l_sql & " TOP 1000000000 " & r_sql
End If
End If
End If
nPage = pPage * CLng(G_PAGE_SIZE)
strSQL = "Select TOP " & CStr(nPage) & " * From (" & pSql & ") AS _TEMP_PAGE_TABLE"
G_TOTAL_RECORD = ExecuteCount(pSql) ' 쿼리문의 전체 레코드 수 구함
rs.CursorType = 1
rs.PageSize = G_PAGE_SIZE
rs.Open strSQL, DBCon
If Not (rs.EOF Or rs.BOF) Then rs.AbsolutePage = pPage
Set ExecutePage = rs
End Function
Public Function ExecuteCount(ByVal pSql)
Dim rs : Set rs = Server.CreateObject("ADODB.RecordSet")
Set rs = DBCon.Execute(pSql)
ExecuteCount = CLng(rs(0))
rs.Close
Set rs = nothing
End Function
Function GetPageCount(ByVal pTotalRecord)
Dim retVal
pTotalRecord = CLng(pTotalRecord)
retVal = Fix(pTotalRecord / G_PAGE_SIZE)
If (pTotalRecord Mod G_PAGE_SIZE) > 0 Then
retVal = retVal + 1
End If
GetPageCount = CLng(retVal)
End Function
Public Function ShowPageBar(ByVal pCurPage, ByVal pPreImg, ByVal pNextImg, ByVal param)
Dim nPREV
Dim nCUR
Dim nNEXT
Dim i
Dim nPageCount
Dim retVal
Dim strLink
Dim pageKubun
nPageCount = GetPageCount(G_TOTAL_RECORD)
If pPreImg = "" Then
pPreImg = "[이전]"
Else
pPreImg = "<img src='" & pPreImg & "' border=0 align=absmiddle>"
End If
If pNextImg = "" Then
pNextImg = "[다음]"
Else
pNextImg = "<img src='" & pNextImg & "' border=0 align=absmiddle>"
End If
nPREV = (Fix((pCurPage - 1) / 10) - 1) * 10 + 1
nCUR = (Fix((pCurPage - 1) / 10)) * 10 + 1
nNEXT = (Fix((pCurPage - 1) / 10) + 1) * 10 + 1
If nPREV > 0 Then
strLink = "?curPage=" & nPREV & param
retVal = "<a href=""" & strLink & """>" & pPreImg & "</a> "
Else
retVal = "" & pPreImg & " "
End If
i = 1
Do While i < 11 And nCUR <= nPageCount
If nCUR = nPageCount Or i = 10 Then
pageKubun = " "
Else
pageKubun = " . "
End If
If CInt(pCurPage) = CInt(nCUR) Then
retVal = retVal & "<font color=#FF6700 size=3><b>" & nCUR & "</b></font>" & pageKubun
Else
strLink = "?curPage=" & nCUR & param
retVal = retVal & "<a href=""" & strLink & """>" & nCUR & "</a>" & pageKubun
End If
nCUR = nCUR + 1
i = i + 1
Loop
' [다음] 페이지 조합
If nNEXT <= nPageCount Then
strLink = "?curPage=" & nNEXT & param
retVal = retVal & " <a href=""" & strLink & """>" & pNextImg & "</a>"
Else
retVal = retVal & pNextImg & ""
End If
ShowPageBar = retVal
End Function
%>
'플밍_ASP' 카테고리의 다른 글
asp - paging 함수 (0) | 2010.03.24 |
---|---|
asp - sql injection 방지 function (0) | 2010.03.24 |
ASP - 윈도우2003 파일 업로드 게시판 구현시 수정사항 (0) | 2009.07.01 |
ASP와 Oracle 데이터베이스 사이의 연결 문제를 해결하는 방법 (0) | 2009.04.15 |
ASP - 특정 페이지 소스 출력 하는 Function (0) | 2009.02.13 |
Comments