新微赢技术网

标题: 分页显示 [打印本页]

作者: 我和老公在    时间: 2010-1-9 00:24
标题: 分页显示
<table>
<%
do while not rs.eof
response.write("<tr>")
for i=1 to 4
if not rs.eof then
response.write("<td>" & rs("Field") & </td>)
rs.movenext
else
response.write("<td>&nbsp;</td>")
end if
next i
response.write("</tr>")
loop
%>
</table>
我分页显示,如果每页显示两条数据的话,他野会显示四条数据.怎么解决?
作者: 爱琴海    时间: 2010-1-9 00:24
一个比较完整的操作类,自己看咯.添加\修改\删除\分页什么都有.(原创),这里的分页只实现了简单的分页.我也懒得实现更复杂的数据库左外连接\右外连接\内连接之类的东西了.总之,可以扩展.....代码如下:
觉得还可以就加下QQ,本人自己还开发了一套自动生成代码的软件.下面的代码是自动生成的部分代码.对做ASP开发有极大的提高.

<%
'=================================================================================================
'该类为模糊概念类,模糊化了所有模块的数据库操作方法。
'可以对任何表执行添加、取单条记录、编辑、取记录集(自动设置分页)、删除等操作
'作者:莫小明,QQ:272038088
'编写时间:2007-2-6
'=================================================================================================
CLASS CLASSModel
'List():返回带记录集数据,当返回一条记录时
'其重定义为一维数组,当返回多条记录时
'例如分页返回记录集,重定义为二维数组
'Row_N:字段个数,Col_N:某当前页产生的记录数
public List(), Row_N, Col_N,Counts
'''''''''''''''''''''''''''''''''''''''''''''''
'方法名:addNews插入新记录
'参 数:TableName:数据库表名
'参 数:FieldsName:表里的字段,多个则用","隔离,例如“a,b,c”
'参 数:FieldsValues:对应字段参数的值:多个则用","隔离,例如“a值,b值,c值”
'新增成功:返回true 否则返回false
public function addNews(TableName,FieldsName,FieldsValues)
dim flag:flag=false
DIM SQL
SQL="Insert Into ["&TableName&"] ("&FieldsName&") Values("&FieldsValues&")"
on error resume next
Conn.execute(SQL)
if err.number<>0 then
'Response.Write("在操作时出现异常:"+err.description)
ELSE
flag=TRUE
end if
addNews=flag
end function
'方法名:getOneInfos读某个记录
'参 数:TableName:数据库表名
'参 数:FieldsName:表里的字段,多个则用","隔离,例如“a,b,c”,如果是所有则“*”
'参 数:KeyID:某个表的主键
'参 数:id:和主键相匹配的值
public sub getOneInfos(TableName,FieldsName,KeyID,id)
if(id="") then exit sub
'读出某个数据
dim sql
sql="Select "&FieldsName&" from ["&TableName&"] Where "&KeyID&"="&id

set rs=conn.execute(sql)
if(not rs.eof) then
'取得字段个数
Row_N = Rs.Fields.Count - 1
'重定义List
redim List(Row_N)
For IndexKey= 0 To Row_N
List(IndexKey) = Rs.Fields(IndexKey)'将数据发输送到List中
Next
else
exit sub
end if
end sub
public function getOne(TableName,FieldsName,Wheres)
dim sql
sql="Select "&FieldsName&" from "&TableName&""
if(Wheres<>"") then sql=sql&" where "&Wheres
set rs=conn.execute(sql)
if(not rs.eof) then
getOne=rs.fields(0)
else
exit function
end if
end function
'==============================================
'方法名:getInfos读某个记录
'参 数:TableName:数据库表名
'参 数:FieldsName:表里的字段,多个则用","隔离,例如“a,b,c”,如果是所有则“*”
'参 数:Wheres:查询条件
'==============================================
public sub getInfos(TableName,FieldsName,Wheres)
dim sql
sql="Select "&FieldsName&" from "&TableName&""
if(Wheres<>"") then sql=sql&" where "&Wheres
set rs=conn.execute(sql)
if(not rs.eof) then
'取得字段个数
Row_N = Rs.Fields.Count - 1
'重定义List
redim List(Row_N)
For IndexKey= 0 To Row_N
List(IndexKey) = Rs.Fields(IndexKey)'将数据发输送到List中
Next
else
exit sub
end if
end sub
'''''''''''''''''''''''''''''''''''''''''''''''
'方法名:editOneInfos 将某个更新后的数据放入数据库
'参 数:TableName:数据库表名
'参 数:FieldsName():数组对象
'参 数:FieldsValues():数组对象
'参 数:KeyID:某个表的主键
'参 数:id:和主键相匹配的值
'说 明:FieldsName(),FieldsValues()两个数组长度相等
'编辑成功:返回true 否则返回false
public function editOneInfos(TableName,FieldsName(),FieldsValues(),KeyID,ID)
dim flag:flag=false
DIM SQL,i
SQL="Update ["&TableName&"] Set "
i=0
'遍历FieldsName
For Each IndexKey in FieldsName
SQL=SQL& IndexKey &"="&FieldsValues(i)&","
i=i+1
next
'将最后一个“,”过滤掉
SQL=lEFT(SQL,LEN(SQL)-1)
SQL=SQL&" Where "&KeyID&"="&ID
'Response.Write("SQL="+SQL)
'RESPONSE.End()
on error resume next
Conn.execute(SQL)
if err.number<>0 then
Response.Write("在操作时出现异常:"+err.description)
ELSE
flag=TRUE
end if
editOneInfos=flag
end function
'''''''''''''''''''''''''''''''''''''''''''''''
'方法名:delOneInfos 删除,可以进行批量删除
'参 数:TableName:数据库表名
'参 数:KeyID:某个表的主键
'参 数:id:和主键相匹配的值
'删除成功:返回true 否则返回false
public function delOneInfos(TableName,KeyID,ID)
dim flag:flag=false
DIM SQL,i
SQL="Delete From ["&TableName&"]"
SQL=SQL&" Where "&KeyID&" IN("&ID&")"
'Response.Write("SQL="+SQL)
'RESPONSE.End()
on error resume next
Conn.execute(SQL)
if err.number<>0 then
Response.Write("在操作时出现异常:"+err.description)
ELSE
flag=TRUE
end if
delOneInfos=flag
end function
'''''''''''''''''''''''''''''''''''''''''''''''
'方法名:getList
'作 用:返回当前页的记录集
'参 数:TableName某个表名
'参 数:Fields_N,字段串
'参 数:Page_N,传递过来的当前页号
'参 数:PageCount_N每页显示的记录个数
'参 数:Where_str,SQL语句的Where条,不需要带Where关键字,如果为空。则不连Where条件
'参 数:SortTy,确定数据库聚集,一般取ID自动编号
'参 数:OrderBy_S,排列顺序,可以自己选择:ASC或DESC
'''''''''''''''''''''''''''''''''''''''''''''''
public Sub getList(TableName,Fields_N, Page_N,PageCount_N,SortTy,Where_S,OrderBy_S)
'局部变量说明:
'SQL:SQL字符串
'Rs:Recordset对象
'SQL:SQL字符串
'AllCounts:获得数据库中总的记录集
Set Rs = Server.CreateObject("ADODB.Recordset")
countsql="select Count(*)AS C from ["&TableName&"]"
if(Where_S<>"") then countsql=countsql&" Where "&Where_S
set rsCount=Conn.execute(countsql)
if(not rsCount.eof ) then AllCounts=rsCount("C")
'取得页数
'先用除法取整
if(int(PageCount_N)<=int(AllCounts)) then
Counts = Cint(AllCounts/ PageCount_N)
else
Counts=1
end if
'response.Write("AllCounts="&AllCounts&",PageCount_N="&PageCount_N)
'判断是否有余数
If (AllCounts Mod PageCount_N<>0 and AllCounts>PageCount_N)Then
'存在余数则页数+1
Counts = Counts + 1

End If

'response.Write(",Counts="&Counts)
'当页号大于1时候设置为1
If (CInt(Page_N) < 1) Then Page_N = 1
'当页号大于总页数,设置为最后一页
If (cint(Page_N )> Counts) Then Page_N = Counts
If (cint(Page_N) <= 1) Then
SQL="SELECT TOP "&PageCount_N&" "&Fields_N&" From ["&TableName&"] "
if(Where_S<>"") then SQL=SQL&" Where "&Where_S&" ORDER BY "&OrderBy_S
else
Counts = cint(Counts)
'否则,按以下规则进行过滤抽出记录集
SQL = "SELECT TOP " & PageCount_N&" "& Fields_N
SQL=SQL&" FROM ["&TableName&"] "
SQL=SQL&" WHERE "&SortTy&" NOT In"
SQL=SQL&" ("
SQL=SQL&" SELECT TOP "&PageCount_N*(Page_N-1)&" "&SortTy
SQL=SQL&" FROM ["&TableName&"] ORDER BY "&OrderBy_S
SQL=SQL&" ) "
if(Where_S<>"") then SQL=SQL&" And "&Where_S
SQL=SQL&" ORDER BY "&OrderBy_S
end if
'response.Write("start:=======================>>>>SQL="+SQL)
'打开数据库取当前页号的记录集
Rs.Open SQL, Conn, 1, 1
'取得字段个数
Row_N = Rs.Fields.Count - 1
'取得当前记录的条数
Col_N = Rs.RecordCount - 1
'重定义二维数组
ReDim List(Row_N, Col_N)
'判断存在,循环输入数组
If Not Rs.EOF Then
'循环取出行记录
For i = 0 To Col_N
'如果到尾,跳出循环
If Rs.EOF Then Exit For
'循环取出字段
For j = 0 To Row_N
List(j, i) = Rs.Fields(j)
Next
'移动到下一条记录
Rs.MoveNext
Next
End If
'关闭
Rs.Close
Set Rs = Nothing
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'方法名:pageFun
'作 用:上下页
'参 数:page 当前的页号
public function pageFun(page)
dim s
s="&bigName="&RequestData("bigName")&"&smallName="&RequestData("smallName")
dim str:str=""
str=str&"<table width='100%' border='0' align=center cellpadding=0 cellspacing=0 >"
str=str&" <tr>"
str=str&" <td><a href='?page=1"&s&"'>最前页</a> | <a href='?page="&(page-1)&""&s&"'>上一页</a> | <a href='?page="&(page+1)&""&s&"'>下一页</a> | <a href='?page="&Counts&""&s&"'>最末页</a> | "&page&"/"&Counts&"页</td> "
str=str&" </tr>"
str=str&"</table>"
pageFun=str
end function
'=============================
'分页方式
'=============================
public function getPage(page)
dim str
dim color
'response.Write("ccc="&Counts&"")
for i=1 to Counts
if(cstr(i)="1") then
str=getUrl(page,i)
else
str=str&","&getUrl(page,i)
end if
next
getPage=str
end function
'===========================
'取得URL
'===========================
private function getUrl(page,key)
if(cint(page)=key) then
getUrl="<font color='red'>"&key&"</font>"
else
getUrl="<a href='?page="&key&"'>"&key&"</a>"
end if
end function
END CLASS
%>
作者: 苍穹    时间: 2010-1-9 00:24
把你的邮告诉我,我发给你一段源程序
作者: 云飞    时间: 2010-1-9 00:24
怎样横向现实又实现分页呢?
作者: 追梦人︶ㄣ    时间: 2010-1-9 00:24
好人啊
作者: 爱你爱到西元    时间: 2010-1-9 00:24
这个不是我上次写给你的吗?
这个是横向显示,根本不是分页的代码啊
作者: 飘香剑雨    时间: 2010-1-9 00:24
去百度或google一搜就可以了
作者: 烟灰缸2    时间: 2010-1-9 00:24
分页代码太长了,你可以在本论坛或者百度或者google搜索,有相当多的现成代码,

不过横向显示这部分估计要自己改
作者: 汽车小改装    时间: 2010-1-20 08:05
到你的~~贴吧收藏~~~我的发言~`找
作者: dongdg    时间: 2010-2-27 23:05
★:不回不行了,因为LZ太有才了。




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2