时间:2021-05-25
CREATEPROCEDUREGoalerPageSp
@IntPageSizeint,
@IntCurrPageint,
@strFieldsnvarchar(2000),
@strTablevarchar(200),
@strWherevarchar(800),
@strOrderTypevarchar(200),
@strKeyFieldvarchar(50)
AS
SETNOCOUNTON
DECLARE@tmpSQLnvarchar(4000)--存放动态SQL语句
DECLARE@tmpWherevarchar(800)
DECLARE@tmpAndWherevarchar(800)--用于第N(>1)页上边的查询条件
DECLARE@tmpOrdervarchar(200)
DECLARE@tmpD_Xvarchar(2)
DECLARE@tmpMin_MAXvarchar(3)
--设置条件--
IF@strWhereISNULLORRTRIM(@strWhere)=''
BEGIN--没有查询条件
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='ORDERBY'+@strKeyField+'DESC'
END
ELSE
BEGIN
SET@tmpD_X='>'
SET@tmpMin_MAX='MAX'
SET@tmpOrder='ORDERBY'+@strKeyField+'ASC'
END
--SQL查询--
IF@IntCurrPage=1
Set@tmpSQL='SELECTTOP'+CAST(@IntPageSizeASVARCHAR)+''+@strFields+'FROM'+@strTable+''+@tmpWhere+''+@tmpOrder
ELSE
SET@tmpSQL='SELECTTOP'+CAST(@IntPageSizeASVARCHAR)+''+@strFields+'FROM'+@strTable+'WHERE('+@strKeyField+''+@tmpD_X+'(SELECT'+@tmpMin_MAX+'('+@strKeyField+')FROM(SELECTTOP'+CAST(@IntPageSize*(@IntCurrPage-1)ASVARCHAR)+''+@strKeyField+'FROM'+@strTable+''+@tmpWhere+''+@tmpOrder+')AST))'+@tmpAndWhere+''+@tmpOrder
EXEC(@tmpSQL)
GO
调用方法:
IntPageSize=20
strTable="[TableName]"'数据表名称
strFields="Field1,Field2,Field3,Field4"'需要读取的列名
strKeyField="Field1"'主键:这里假设Field1为主键
strWhere=""'条件:FieldA='b'
strOrderType=1'排序方式:1为倒序,0为顺序
CurrPage=Request.QueryString("Page")
IF(CurrPage<>""AndIsnumeric(CurrPage))THEN
CurrPage=CLNG(CurrPage)
IF(CurrPage<1)THENCurrPage=1
ELSE
CurrPage=1
ENDIF
IFstrWhere<>""THEN
tmpWhere="WHERE"&strWhere
ELSE
tmpWhere=""
ENDIF
IF(SESSION("RecCount")<>"")THEN
IF(SESSION("strWhere")<>strWhere)THEN
RecCount=Conn.Execute("SELECTCOUNT("&strKeyField&")FROM"&strTable&tmpWhere)(0)
SESSION("RecCount")=RecCount
SESSION("strWhere")=strWhere
ELSE
RecCount=SESSION("RecCount")
ENDIF
ELSE
RecCount=Conn.Execute("SELECTCOUNT(*)FROM"&strTable&tmpWhere)(0)
SESSION("RecCount")=RecCount
SESSION("strWhere")=strWhere
ENDIF
IF(RecCountMODIntPageSize<>0)THEN
IntPageCount=INT(RecCount/IntPageSize)+1
ELSE
IntPageCount=RecCount/IntPageSize
ENDIF
SETCmd=Server.CreateObject("Adodb.Command")
Cmd.CommandType=4
SETCmd.ActiveConnection=Conn
Cmd.CommandText="GoalerPageSp"
Cmd.Parameters.AppendCmd.CreateParameter("@IntPageSize",4,1,4,IntPageSize)
Cmd.Parameters.AppendCmd.CreateParameter("@IntCurrPage",4,1,4,CurrPage)
Cmd.Parameters.AppendCmd.CreateParameter("@strFields",200,1,2000,strFields)
Cmd.Parameters.AppendCmd.CreateParameter("@strTable",200,1,200,strTable)
Cmd.Parameters.AppendCmd.CreateParameter("@strWhere",200,1,800,strWhere)
Cmd.Parameters.AppendCmd.CreateParameter("@strOrderType",4,1,4,strOrderType)
Cmd.Parameters.AppendCmd.CreateParameter("@strKeyField",200,1,50,strKeyField)
SETRS=Cmd.Execute()
IFRecCount<1THEN
Response.Write("没有记录")
ELSE
GetRecord=RS.GetRows(IntPageSize)
Fori=0ToUbound(GetRecord,2)
Response.Write(GetRecord(0,i),GetRecord(1,i),GetRecord(2,i))'...输出内容
NEXT
GetRecord=Null
ENDIF
SETRS=NOTHING
有用的朋友请自己慢慢调试吧,总记录是用ASP来取的,存储在SESSION里边,如果每次都统计一次总记录,将会非常费时,当然,如果你想在存储过程里来取总记录和总页数然后返回也是可以的,下边是代码:
--获取记录总数--
SET@tmpSQL='SELECT@getRecordCounts=COUNT('+@strKeyField+')FROM'+@strTable+@tmpWhere
EXECsp_executesql@tmpSQL,N'@getRecordCountsintoutput',@getRecordCountsOUTPUT
--获取总页数--
SET@tempFolatNumber=@getRecordCounts%@IntPageSize
IF@getRecordCounts<=@IntPageSize
SET@getPageCounts=1
ELSE
BEGIN
IF@tempFolatNumber!=0
SET@getPageCounts=(@getRecordCounts/@IntPageSize)+1
ELSE
SET@getPageCounts=(@getRecordCounts/@IntPageSize)
END
别忘了返回定义参数:
@getRecordCountsintoutput,--返回总记录
@getPageCountsintoutput--返回总页数
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
我选择了jQuery,最主要是它的思想“writeless,domore",因为我是一个挑剔的人,以前写过的代码,会时不时翻出来,看看有没有可以精简,优化的地方
要想在淘宝网做买卖就需要明白许多专业知识,刷销量一不小心就罚分,发布产品一不小心就违反规定、罚分,宝贝描述填错、胡写、广告费,一不小心也是一个违反规定,这种难题
在进行winform开发过程中有时候会需要关闭其他程序或者关闭进程,以前写过一篇相关介绍的文章,今天有同事问起来,于是在次翻出来和大家分享一下。下面介绍我所知的
VSCode配置python调试环境很久之前的一个东东,翻出来看看VSCode配置python调试环境*1.下载python解释器*2.在VSCode市场中安装
老师说要写blog,然后只能把雪藏了多年没动过的博客重新翻出来了,今天先分享下JSP里的倒数计时和自动跳转页面抓狂然后刚才好不容易码完,网页出错了。1,在标签中