CREATE&nbs
p;PROCEDURE GoalerPageSp
@IntPageSize int,
@IntCurrPage int,
@strFields nv
Archar(2000),
@strTable
VARchar(200),
@strWhere varchar(800),
@strOrderTy
PE varchar(200),
@strKeyField varchar(50)
AS
SET NOCOUNT ON
DECLARE @
tmpSQL nvarchar(4000)
--存放动态SQL语句DECLARE @tmpWhere varchar(800)
DECLARE @tmpAndWhere varchar(800)
--用于第N(>1)页上边的查询条件DECLARE @tmpOrder varchar(200)
DECLARE @tmpD_X varchar(2)
DECLARE @tmpMin_MAX varchar(3)
--设置条件--IF @strWhere IS NULL OR RTRIM(@strWhere)=''
BE
gin --没有查询条件 SET @tmpWhere=''
SET @tmpAndWhere=''
END
ELSE
BEGIN
--有查询条件 SET @tmpWhere=' WHERE '+@strWhere
SET @tmpAndWhere=' AND '+@strWhere
END
--设置排序--IF @strOrderType != 0
BEGIN
--倒序 SET @tmpD_X = '<'
SET @tmpMin_MAX = 'MIN'
SET @tmpOrder=' ORDER BY ' +@strKeyField+ ' DESC'
END
ELSE
BEGIN
SET @tmpD_X = '>'
SET @tmpMin_MAX = 'MAX'
SET @tmpOrder=' ORDER BY ' +@strKeyField+ ' ASC'
END
--sQL查询--IF @IntCurrPage=1
Set @tmpSQL='SELECT TOP '+CAST(@IntPageSize AS VARCHAR)+' '+@strFields+'
From '+@strTable+' '+@tmpWhere+' '+@tmpOrder
ELSE
SET @tmpSQL='SELECT TOP '+CAST(@IntPageSize AS VARCHAR)+' '+@strFields+' F
rom '+@strTable+' WHERE ('+@strKeyField+' '+@tmpD_X+' (SELECT '+@tmpMin_MAX+'('+@strKeyField+') FROM (SELECT TOP '+CAST(@IntPageSize*(@IntCurrPage-1) AS VARCHAR)+' '+@strKeyField+' FROM '+@strTable+' '+@tmpWhere+' '+@tmpOrder+') AS T))'+@tmpAndWhere+' '+@tmpOrder
EXEC(@tmpSQL)
GO
IntPageSize=20
strTable=" [TableN
ame] "
'数据表名称strFields=" Field1,Field2,Field3,Field4 "
'需要读取的列名strKeyField="Field1"
'主键:这里假设Field1为主键strWhere=""
'条件:FieldA='b'strOrderType=1
'排序方式:1为倒序,0为顺序CurrPage=Request.QueryString("Page")
IF(CurrPage<>"" And Isnumeric(CurrPage))THEN
CurrPage=CLNG(CurrPage)
IF(CurrPage<1)THEN CurrPage=1
ELSE
CurrPage=1
END IF
IF strWhere<>"" THEN
tmpWhere=" WHERE "&strWhere
ELSE
tmpWhere=""
END IF
IF(SESSION("RecCount")<>"")THEN
IF(SESSION("strWhere")<>strWhere)THEN
RecCount=Conn.Execute("SELECT COUNT("&strKeyField&") FROM "&strTable&tmpWhere)(0)
SESSION("RecCount")=RecCount
SESSION("strWhere")=strWhere
ELSE
RecCount=SESSION("RecCount")
END IF
ELSE
RecCount=Conn.Execute("SELECT COUNT(*) FROM "&strTable&tmpWhere)(0)
SESSION("RecCount")=RecCount
SESSION("strWhere")=strWhere
END IF
IF(RecCount 
;mOD IntPageSize <>0)THEN
IntPageCount=INT(RecCount/IntPageSize)+1
ELSE
IntPageCount=RecCount/IntPageSize
END IF
SET Cmd=Server.CreateObject("Adodb
.COMmand")
Cmd.CommandType=4
SET Cmd.ActiveConnection=Conn
Cmd.CommandText="GoalerPageSp"
Cmd.Parameters.Append Cmd.CreateParameter("@IntPageSize",4,1,4,IntPageSize)
Cmd.Parameters.Append Cmd.CreateParameter("@IntCurrPage",4,1,4,CurrPage)
Cmd.Parameters.Append Cmd.CreateParameter("@strFields",200,1,2000,strFields)
Cmd.Parameters.Append Cmd.CreateParameter("@strTable",200,1,200,strTable)
Cmd.Parameters.Append Cmd.CreateParameter("@strWhere",200,1,800,strWhere)
Cmd.Parameters.Append Cmd.CreateParameter("@strOrderType",4,1,4,strOrderType)
Cmd.Parameters.Append Cmd.CreateParameter("@strKeyField",200,1,50,strKeyField)
SET RS=Cmd.Execute()
IF RecCount<1 THEN
Response.Wr
ITe("没有记录")
ELSE
GetRecord=RS.GetRows(IntPageSize)
For i=0 To
ubound(GetRecord,2)
Response.Write(GetRecord(0,i),GetRecord(1,i),GetRecord(2,i))
'...输出内容 NEXT
GetRecord=Null
END IF
SET RS=NOTHING