设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 92|回复: 9
打印 上一主题 下一主题

分页显示

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-9 00:24:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<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>
我分页显示,如果每页显示两条数据的话,他野会显示四条数据.怎么解决?
2#
发表于 2010-1-9 00:24:31 | 只看该作者
一个比较完整的操作类,自己看咯.添加\修改\删除\分页什么都有.(原创),这里的分页只实现了简单的分页.我也懒得实现更复杂的数据库左外连接\右外连接\内连接之类的东西了.总之,可以扩展.....代码如下:
觉得还可以就加下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
%>
回复 支持 反对

使用道具 举报

3#
发表于 2010-1-9 00:24:35 | 只看该作者
把你的邮告诉我,我发给你一段源程序
回复 支持 反对

使用道具 举报

4#
发表于 2010-1-9 00:24:40 | 只看该作者
怎样横向现实又实现分页呢?
回复 支持 反对

使用道具 举报

5#
发表于 2010-1-9 00:24:44 | 只看该作者
好人啊
回复 支持 反对

使用道具 举报

6#
发表于 2010-1-9 00:24:48 | 只看该作者
这个不是我上次写给你的吗?
这个是横向显示,根本不是分页的代码啊
回复 支持 反对

使用道具 举报

7#
发表于 2010-1-9 00:24:52 | 只看该作者
去百度或google一搜就可以了
回复 支持 反对

使用道具 举报

8#
发表于 2010-1-9 00:24:56 | 只看该作者
分页代码太长了,你可以在本论坛或者百度或者google搜索,有相当多的现成代码,

不过横向显示这部分估计要自己改
回复 支持 反对

使用道具 举报

9#
发表于 2010-1-20 08:05:03 | 只看该作者
到你的~~贴吧收藏~~~我的发言~`找
回复 支持 反对

使用道具 举报

10#
发表于 2010-2-27 23:05:06 | 只看该作者
★:不回不行了,因为LZ太有才了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 18:38 , Processed in 0.125147 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

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