仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 496|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网页编程之在ASP中改良静态分页的功能

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。静态|分页|功能Fromcomputerworld

在ASP中改良静态分页的功能
国民银行济南分行整理中央张立锋
山东省水利迷信研讨院张禾 

--------------------------------------------------------------------------------

概述
----如今有很多先容使用ASP完成静态分页的文章,办法迥然不同,就是每次使用ADO前往原始数据满意前提纪录会合的指定页。但在实践工程使用中,原始数据量一般很年夜,原始数据的加工对照慢,假如每次换页原始数据都要加工一次,则会严峻影呼应用程序运转的功能。
----办理上述成绩次要有两种路子:一种路子是将查询前提绝对流动,使用绝对流动的查询前提对原始数据举行加工,天生一个小数据量的两头库,每次查询都对两头库举行操纵。如许固然会进步程序的功能,但会影响程序的天真性,并且Server端还需准时对原始数据举行加工保护。另外一个路子是在Server端保留查询的了局。如许固然不克不及改良查询的功能,但Client端换页时Server端可以很快呼应。第一种路子的完成对照复杂,本文先容第二种路子的完成办法。

完成办法
----将Server真个查询了局保留在一个静态数组中,即在Session_OnStart过程当中声明一个二维的静态数组。当Server端收到Client端提交的请求后,起首判别请求是前提查询仍是换页,如是前提查询则辨别查询前提是不是与前次提交的查询前提分歧,如分歧则实行查询,将查询了局保留在该数组中,然后向Client端前往第一页的内容,不然间接从该数组中前往响应页的内容。
程序完成
----1.界说二维数组及其他变量
SubSession_OnStart
dimTempDb()
redimPreserveTempDb(1,2)
session(“StoredArray")=TempDb
’界说一个Session数组
session(“iPageCount")=0
session(“iPageNo")=0
......
EndSub

----2.挪用存储历程前往数据

SubGetRecordSet(strBbmc,strKssj,
strZzsj,strNodeCode,strFxzl)
参数为报表称号和各个限定前提
selectcasestrBbmc
case“买卖汇总表"
strCnn=“PROVIDER=MSDASQL;dsn=sqldb;
uid=sa;pwd=123456;database=vlog;"
Setobjcnn=Server.CreateObje(“ADODB.Connection")
objcnn.CommandTimeout=9999999
objcnn.ConnectionTimeout=99999999
objcnn.CursorLocation=adUseClient
objcnn.OpenstrCnn翻开毗连
SetobjRs=Server.CreateObject
(“ADODB.Recordset")
objRS.PageSize=iPageSize
objRS.CacheSize=iPageSize
objRs.Open“sszhatmlog‘“&strKssj&",
‘“&strZzsj&",‘“&strNodeCode&",
‘“&strFxzl&"",objcnn,adOpenStatic,
adLockReadOnly,1
’实行存储历程前往查询了局
......
EndSub

----3.将查询了局保留到静态数组

SubSaveRecordSet()
ifobjRs.EOF=falsethen
objRs.movelast
session(“iRowCount")=objRs.recordCount
session(“iFieldCount")=objRs.Fields.Count
session(“iPageCount")=objRs.pagecount
redimPreserveTempArray(session
(“iRowCount"),session(“iFieldCount"))
’TempArray是一个二维静态数组,
依据纪录集巨细从头界说其巨细
objRs.MoveFirst
iCount=0
dowhileobjRs.EOF=false
iCount=iCount+1
fori=1tosession(“iFieldCount")
TempArray(iCount,i)=objRs.Fields.Item
(i-1).value
next
objRs.MoveNext
loop
session(“StoredArray")=TempArray
objRs.Close
else
session(“iPageCount")=0
endif
EndSub

----4.显现纪录内容

SubShowRecord()
......
LocalArray=session(“StoredArray")
iShowTotal=(iPageCurrent-1)*iPageSize+1
iRowLoop=1
dowhileiRowLoop<=iPageSizeandiShowTotal
<=session(“iRowCount")
Response.Write(“<TR>")
fori=1Tosession(“iFieldCount")
Response.write(“<TD>"
&LocalArray(iShowTotal,i))Next
Response.Write(“</TR>")
iShowTotal=iShowTotal+1
iRowLoop=iRowLoop+1loop
Response.Write(“</TABLE>")
ifiPageCurrent1and
iPageCurrent<session
(“iPageCount")then
%>
<center><AHREF=“db_pag.asp?page=<%=
iPageCurrent-1%>">前一页</A><AHREF=
“db_pag.asp?page=<%=iPageCurrent+1%>">
后一页</A></center>
<%
else
ifiPageCurrent1then
%>
<center><AHREF=“db_pag.asp?page=<%=
iPageCurrent-1%>">前一页</A></center>
<%
endif
ifiPageCurrent<session(“iPageCount")then
%>
<center><AHREF=“db_pag.asp?page=
<%=iPageCurrent+1%>">后一页</A>
</center>
<%
endif
endif
EndSub

----5.主程序

ifRequest.QueryString(“page")=“"then
’提交查询请求而且查询前提与上一次分歧
......
callGetRecordSet(strBbmc,strKssj,strZzsj,
strNodeCode,strFxzl)
callSaveRecordSet
Else
iPageCurrent=CInt(Request.QueryString(“page"))
strKssj=session(“strKssj")
endif
ifsession(“iPageCount")=0then
Response.Write“抱愧!没有满意前提的纪录"
Response.Write“<Br>"
else
callshowrecord()
endif

停止语
----本程序的关头在于Session数组的界说及其赋值的完成,经由过程使用Session数组能够进步处置大批数据的使用程序的功能。
</p>Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
小魔女 该用户已被删除
沙发
 楼主| 发表于 2015-1-29 06:16:27 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-30 23:21:22 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
分手快乐 该用户已被删除
地板
发表于 2015-2-6 16:44:46 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
变相怪杰 该用户已被删除
5#
发表于 2015-2-17 09:39:24 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
乐观 该用户已被删除
6#
发表于 2015-3-5 18:58:49 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
若相依 该用户已被删除
7#
发表于 2015-3-12 11:23:14 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-19 21:16:02 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表