箭在弦上电视剧下载,金融在职研究生,男子扑上台强吻车模
原作:张立锋 张 禾
概 述
现在有不少介绍利用asp实现动态分页的文章,方法大同小异,就是每次利用ado返回原始数据满足条件记录集中的指定页。但在实际工程应用中,原始数据量通常很大,原始数据的加工比较慢,如果每次换页原始数据都要加工一次,则会严重影响应用程序运行的性能。
解决上述问题主要有两种途径:一种途径是将查询条件相对固定,利用相对固定的查询条件对原始数据进行加工,生成一个小数据量的中间库,每次查询都对中间库进行操作。这样虽然会提高程序的性能,但会影响程序的灵活性,而且 server端还需定时对原始数据进行加工维护。另一个途径是在server端保存查询的结果。这样虽然不能改善查询的性能,但client端换页时server端能够很快响应。第一种途径的实现比较简单,本文介绍第二种途径的实现方法。
实现方法
将server端的查询结果保存在一个动态数组中,即在 session_onstart过程中声明一个二维的动态数组。当server端收到client端提交的申请后,首先判断申请是条件查询还是换页,如是条件查询则判别查询条件是否与上次提交的查询条件不同,如不同则执行查询,将查询结果保存在该数组中,然后向client端返回第一页的内容,否则直接从该数组中返回相应页的内容。
程序实现
1.定义二维数组及其他变量
sub session_onstart
dim tempdb()
redim preserve tempdb(1,2)
session(“storedarray") = tempdb
’定义一个session数组
session(“ipagecount")=0
session(“ipageno")=0
......
end sub
2.调用存储过程返回数据
sub getrecordset(strbbmc,strkssj ,
strzzsj ,strnodecode ,strfxzl )
参数为报表名称和各个限制条件
select case strbbmc
case “交易汇总表"
strcnn=“provider=msdasql;dsn=sqldb;
uid=sa;pwd=123456;database=vlog;"
set objcnn=server.createobje(“adodb.connection")
objcnn.commandtimeout = 9999999
objcnn.connectiontimeout = 99999999
objcnn.cursorlocation = aduseclient
objcnn.open strcnn 打开连接
set objrs =server.createobject
(“adodb.recordset")
objrs.pagesize = ipagesize
objrs.cachesize = ipagesize
objrs.open “sszhatmlog ‘“ & strkssj & " ,
‘“ & strzzsj & ", ‘“ & strnodecode & " ,
‘“ & strfxzl & "",objcnn,adopenstatic ,
adlockreadonly,1
’执行存储过程返回查询结果
......
end sub
3.将查询结果保存到动态数组
sub saverecordset()
if objrs.eof = false then
objrs.movelast
session(“irowcount") = objrs.recordcount
session(“ifieldcount") = objrs.fields.count
session(“ipagecount") = objrs.pagecount
redim preserve temparray(session
(“irowcount"),session(“ifieldcount"))
’temparray是一个二维动态数组,
根据记录集大小重新定义其大小
objrs.movefirst
icount=0
do while objrs.eof=false
icount = icount + 1
for i= 1 to session(“ifieldcount")
temparray(icount,i)=objrs.fields.item
(i-1).value
next
objrs.movenext
loop
session(“storedarray") = temparray
objrs.close
else
session(“ipagecount") = 0
end if
end sub
4.显示记录内容
sub showrecord()
......
localarray=session(“storedarray")
ishowtotal=(ipagecurrent-1)*ipagesize+1
irowloop = 1
do while irowloop < = ipagesize and ishowtotal
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!!
点击进行留言回复
网友评论