仓酷云

标题: ASP网页编程之两个分歧数据库表的分页显现办理计划 [打印本页]

作者: 蒙在股里    时间: 2015-1-16 22:35
标题: ASP网页编程之两个分歧数据库表的分页显现办理计划
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。程序完成功效:两个数据表的数据分页显现
比来我碰到一个对照少见的需求,不知人人是不是也有碰到过,说出来与人人分享.
客户需求:两部分数据,分离来自分歧地位的两个数据库中的两个表,界说为数据库DB1和DB2,表Table1和Tabel2,要将这两个表数据分离在页面的上半部分和下半部分显现,而且用统一个分页码,如第一部分数据不敷,将用第二部分数据弥补
/*代码*/
<%
SetobjConn1=Server.CreateObject("ADODB.Recordset")
SetobjConn2=Server.CreateObject("ADODB.Recordset")
objConn1.Open"PROVIDER=SQLOLEDB;DATASOURCE=localhost;UID=sa;PWD=123;DATABASE=DB1"
objConn2.Open"PROVIDER=SQLOLEDB;DATASOURCE=localhost;UID=sa;PWD=123;DATABASE=DB2"
Page=CLng(Request.QueryString("Page"))
ifpage=""then
page=1
endif
StrSQL1="select*fromTable1orderbyIDdesc"
StrSQL2="select*fromTable2orderbyIDdesc"
record_count1=Clng(objConn1.execute(StrSQL1)(0))失掉第一个表的纪录数
record_count2=Clng(objConn2.execute(StrSQL2)(0))失掉第二个表的纪录数
record_count=record_count1+record_count2失掉两个表的纪录数和
Ifrecord_count>0Then
page_size1=5默许第一个表部分数据的每页显现数
page_size2=5默许第二个表部分数据的每页显现数
page_count1=CInt(record_count1/page_size1)
If(record_count1Modpage_size1)<(page_size1/2)Thenpage_count1=page_count1+1失掉第一部分数据的页数
page_count2=CInt(record_count2/page_size2)
If(record_count2Modpage_size2)<(page_size2/2)Thenpage_count2=page_count2+1失掉第二部分数据的页数
ifCint(page_count2)=cint(page)then假定第二部分数据必定少,这里判定是不是以后页是少的那分数据的最初一页
thepageRecordcount=record_count2-(page-1)*5第二部分数据的最初一页的数据显现条数
page_size1=10-cint(thepageRecordcount)第一部分数据在第二部分最初页的显现条数
page_size1=cint(thepageRecordcount)失掉第一部分在本页的显现条数
elseifcint(page)>cint(page_count2)then这以后将满是第一部分数据
page_size1=10
page_size2=0
endif
page_count=CInt(record_count/(page_size1+page_size2)全体两类一同的分页数
If(record_countMod(page_size1+page_size2))<((page_size1+page_size2)/2)Thenpage_count=page_count+1
IfPage<1Then
Page=1
EndIf
IfPage>page_countThen
Page=page_count
EndIf
DimPagefrom,Pageto
Pagefrom=page-10
Pageto=page+10
ifPagefrom<1then
Pagefrom=1
endif
ifPageto>record_countthen
Pageto=page_count
endif

EndIf

IfPage<=1Then第一页显现查询
StrSQL1="SelectTop"&page_size1&"*FromTable1"
StrSQL1=StrSQL1&"OrderByIDdesc"
StrSQl2="SelectTop"&page_size1&"*FromTable2"
StrSQL2=StrSQL2&"orderbyiddesc"
Else第N页显现查询
StrSQL1="SelectTop"&(Page-1)*page_size1&"IDFromTable1"
StrSQL1=StrSQL1&"OrderByidDesc"
StrSQL1="SELECTTop1IDFrom("&StrSQL1&")DERIVEDTBLOrderByid"
Response.Write(SQL)
id=Trim(objConn1.execute(StrSQL1)(0))
StrSQL1="SelectTop"&page_size1&"*FromTable1"
StrSQL1=StrSQL1&"whereid<"&id&""
StrSQL1=StrSQL1&"OrderByidDesc"

StrSQL2="SelectTop"&(Page-1)*page_size2&"idFromTable2"
StrSQL2=StrSQL2&"OrderByidDesc"
StrSQL2="SELECTTop1idFrom("&StrSQL2&")DERIVEDTBLOrderByid"
id=Trim(objconn2.execute(StrSQL2)(0))
StrSQL2="SelectTop"&page_size2&"*FromTable2"
StrSQL2=StrSQL2&"whereid<"&id&""
StrSQL2=StrSQL2&"OrderByidDesc"
EndIf
%>
<%
Ifrecord_count>0Then
%>
<%
SetRs1=Server.CreateObject("Adodb.Recordset")
rs1.openStrSQL1,objconn1
Forn=1Topage_size1
Ifrs1.EofThenExitFor
%>
<!--显现的第一部份内容轮回-->
<%
rs1.MoveNext
Ifrs1.EOFThenExitFor
Next
rs1.close
setrs1=nothing
%>
<%
SetRs2=Server.CreateObject("Adodb.Recordset")
rs2.openStrSQL2,objconn2
Forn=1Topage_size2
Ifrs2.EofThenExitFor
%>
<!--显现的第二部份内容轮回-->
<%
rs2.MoveNext
Ifrs2.EOFThenExitFor
Next
rs2.close
setrs2=nothing
%>
<!--了局页码-->
<%ifpage"1"then%><ahref=?page=<%=Cint(page-1)%>>上一页</a><%endif%>
<%用for轮回来写出页数毗连
Fori=PagefromtoPageto
ifi=0then
i=1
endif
ifiCint(page)then
strurl="<ahref=?page="&i&"><fontcolor=#000000>"&i&"</font></a>"
else
strurl="<b><fontcolor=#ce0031>"&i&"</font></b>"
endif
response.writestrurl
response.write""
next
%>
<%ifpage_count=1or(page_count-Cint(page))=0then
response.Write("")
else
response.Write"<ahref=?page="&Cint(page+1)&">下一页</a>"
endif
%>
<!--了局页码-->
/*代码停止*/
自己程度无限,程序粗拙,大概有不敷的地方~看品评斧正~
ASP最大的缺点在于网络的安全性和可靠性,企业将经营数据放在开放的平台上,最大的担忧就是如何保证这些数据不被其他人破坏。
作者: 爱飞    时间: 2015-1-19 17:52
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
作者: 若天明    时间: 2015-1-25 21:57
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
作者: 柔情似水    时间: 2015-2-4 06:30
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
作者: 仓酷云    时间: 2015-2-9 17:45
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
作者: 莫相离    时间: 2015-3-9 05:10
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
作者: 再现理想    时间: 2015-3-16 20:54
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
作者: 谁可相欹    时间: 2015-3-23 01:51
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2