请问下,关于分页显示的

longfeifei 2007-07-23 03:36:01
请看我的数据库中的两个表
一个表为prodinfo,主键值是 serial
serial modelno category
1 1528 time
2 1235 other
3 8563 time
.
.
.
还有一个表为promo,主键值是 serial
serial modelno promotype status
1 1235 close-out on
2 8563 close-out on
3 1777 close-out off
4 1528 Excusive on
.
.
.

我想实现的是显示出每个category中满足所有条件的结果,请看我的语句

set objRec=server.createobject("adodb.recordset")
strSQL="select ModelNo,MinQty,DateExpire,Amt,DiscType,Restriction from Promo where PromoType='Close-Out' and Status='On' order by ModelNo"
objRec.open strSQL, strDS1, adOpenKeyset, adLockReadOnly, adCmdText
if objRec.eof then
' nothing to do
else
varData=objRec.getrows
intDataCount=ubound(varData,2)
redim varSubData(4,intDataCount)
end if
objRec.close
set objRec=nothing

if isarray(varData)=true then
for y=0 to intDataCount
' Standard DB Look-Up Routine.
set objRec=server.createobject("adodb.recordset")
strSQL="select ModelName,Color,Category,SubCategory,Description from ProdInfo where Category='"&strCat&"' and ModelNo='" & varData(0,y) & "' "
objRec.open strSQL, strDS1, adOpenKeyset, adLockReadOnly, adCmdText
if objRec.eof then
'nothing to do
else
varSubData(0,y)=objRec(0).value
varSubData(1,y)=objRec(1).value
varSubData(2,y)=objRec(2).value
varSubData(3,y)=objRec(3).value
varSubData(4,y)=objRec(4).value
end if
objRec.close
set objRec=nothing
next


可是我在循环的时候,出现了当我选择一个类别后,该列表的信息显示,而不属于该列别的信息也显示在页面上,请问该怎么办呢?

...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanxin2199 2008-07-11
  • 打赏
  • 举报
回复
response.write strSQL
看结果
NIKIA 2008-06-17
  • 打赏
  • 举报
回复
说明你的循环体内的查询数据有问题
仔细检查一下:
strSQL= "select   ModelName,Color,Category,SubCategory,Description   from 
ProdInfo where Category= ' "&strCat& " ' and ModelNo= ' " & varData(0,y) & " ' "

看是否有记录

关键是你的strCat,varData(0,y)这两个值是否正确。
hulangfy 2008-06-17
  • 打赏
  • 举报
回复
这个看不清楚。不过可以介绍个好的分页你。不好你打我。。。
--------------------------------------------------------------
文件:conn.asp
<%
Option Explicit
On Error Resume Next
Response.Expires = -9999
Dim DataBase,Conn,HaiTao,rs
DataBase="db.mdb"
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(DataBase)
If Err Then
Conn.Close
Set Conn=Nothing
Response.Write"数据库连接出错!"
Response.End
End If
On Error GoTo 0
%>
----------------------------------------------------------------
数据库:ACCESS
名称:db.mdb
表名:DataTable
字段:ID 类型:自动编号
Title 类型:备注
Content 类型:备注
AppendDate 类型:日期时间
--------------------------------------------------------------------
文件名:PageClass.asp
<%
Rem ①(*^_^*)
Rem ②本段代码不影响速度
Rem ③Name:张海涛
Rem ④QQ:273456968
Rem ⑤Email:haitaoaa@126.com
Rem ⑥若发现BUG,或者有什么更好的分页思想,欢迎大家联系我,大家一起讨论!
Rem ⑦[山东]爷们

Class PaginationClass

Private HaiTao_Result,HaiTao_RecordCount,HaiTao_ModCount,HaiTao_Conn,HaiTao_Rs,HaiTao_Sql
Private HaiTao_Page,HaiTao_PageCount,HaiTao_PageSize,HaiTao_SignHow,HaiTao_Style
Private HaiTao_Offset,HaiTao_MaxOffset,HaiTao_EndOffset,HaiTao_BeginPage,HaiTao_EndPage

Private Sub Class_Initialize
HaiTao_PageSize = 10 '设定每页记录条数的默认值为10
HaiTao_SignHow = 5 '当前页左右导航数量
HaiTao_Style = False '为导航链接使用样式
HaiTao_Offset = Request.QueryString("Offset") '获取偏移值
End Sub

Public Property Let Conn(ConnectObject)
Set HaiTao_Conn = ConnectObject
End Property

Public Property Let PageSize(Number)
HaiTao_PageSize = Number
End Property

Public Property Let SignHow(Number)
HaiTao_SignHow = Number
End Property

Public Property Let Sql(String)
HaiTao_Sql = String
End Property

Public Property Let Style(BooleanType)
HaiTao_Style = BooleanType
End Property

Public Property Get Result
On Error Resume Next
Set HaiTao_Rs=Server.CreateObject("ADODB.Recordset")
HaiTao_Rs.Open HaiTao_Sql,HaiTao_Conn,1,1
HaiTao_Rs.Move HaiTao_Offset
HaiTao_Result=HaiTao_Rs.GetRows(HaiTao_PageSize,0)
HaiTao_RecordCount = HaiTao_Rs.RecordCount
HaiTao_PageCount = HaiTao_RecordCount \ HaiTao_PageSize
If HaiTao_RecordCount Mod HaiTao_PageSize > 0 Then
HaiTao_PageCount=HaiTao_PageCount + 1
End If
Clear '销毁Recordset和Connetction对象
Result = HaiTao_Result
End Property

Public Property Get RecordCount
RecordCount=HaiTao_RecordCount
End Property

Public Property Get PageCount
PageCount=HaiTao_PageCount
End Property

Public Sub ShowPage
HaiTao_MaxOffset = (HaiTao_PageCount-1) * HaiTao_PageSize '计算偏移值
If Not IsNumeric(HaiTao_Offset) Or Len(HaiTao_Offset) = 0 Or HaiTao_Offset < 1 Then
HaiTao_Offset = 0
End If
If Csng(HaiTao_Offset) > Csng(HaiTao_MaxOffset) Then
HaiTao_Offset = HaiTao_MaxOffset
End If
HaiTao_Page=HaiTao_Offset \ HaiTao_PageSize + 1
With(Response)
If HaiTao_Style Then
.Write"<style>.NoncePage{display:block;float:left;padding:3px 7px 2px 7px;"
.Write"margin:0 2px 0 2px;border:1px solid #ddd;font-weight:bold;text-align:center}"
.Write".Ellipsis{display:block;float:left;padding-left:2px}"
.Write"#PageSign a{display:block;float:left;border:1px solid #ddd;text-align:center;"
.Write"padding:3px 7px 2px 7px;margin:0 2px 1px 2px;white-space:nowrap;"
.Write"color:#444;text-decoration:none}"
.Write"#PageSign{margin-top:5px}#PageTotal{display:block;float:left;"
.Write"padding:4px 2px 1px 2px;margin:0 2px 0 2px;white-space:nowrap;color:#444}</style>"
.Write "<div id=""PageSign"">"
Else
.Write "<div>"
End If
If 1 < HaiTao_PageCount Then '处理分页
HaiTao_BeginPage = HaiTao_Page - HaiTao_SignHow
If HaiTao_BeginPage < 2 Then
HaiTao_BeginPage = 2
End If
HaiTao_EndPage = HaiTao_Page + HaiTao_SignHow
If HaiTao_EndPage >= HaiTao_PageCount Then
HaiTao_EndPage = HaiTao_PageCount - 1
End If
If HaiTao_Page > 1 Then
.Write "<a href=""?Offset="& HaiTao_PageSize*(HaiTao_Page-2) &""">上一页</a>"
End If
Select Case True
Case HaiTao_Page = 1
.Write "<span class=""NoncePage"">1</span>"
Case HaiTao_Page > HaiTao_SignHow + 2
.Write "<a href=""?"">1</a>"
.Write "<span class=""Ellipsis"">...</span>"
Case Else
.Write "<a href=""?"">1</a>"
End Select
For i = HaiTao_BeginPage To HaiTao_EndPage
If i = HaiTao_Page Then
.Write "<span class=""NoncePage"">"& i &"</span>"
Else
.Write "<a href=""?Offset="& HaiTao_PageSize*(i-1) &""">"& i &"</a>"
End If
Next
Select Case True
Case HaiTao_Page = HaiTao_PageCount
.Write "<span class=""NoncePage"">"& HaiTao_PageCount &"</span>"
Case HaiTao_Page < HaiTao_PageCount - HaiTao_SignHow - 1
.Write "<span class=""Ellipsis"">...</span>"
.Write "<a href=""?Offset="& HaiTao_MaxOffset &""">"& HaiTao_PageCount &"</a>"
Case Else
.Write "<a href=""?Offset="& HaiTao_MaxOffset &""">"& HaiTao_PageCount &"</a>"
End Select
If HaiTao_Page < HaiTao_PageCount Then
.Write "<a href=""?Offset="& HaiTao_PageSize*HaiTao_Page &""">下一页</a>"
End If
Else
.Write "<span class=""NoncePage"">1</span>"
End If
.Write "<span id=""PageTotal"">"& HaiTao_PageSize &"条/页 共"& HaiTao_RecordCount &"条记录</span>"
.Write "</div>"
End With
End Sub

Private Sub Clear()
If IsObject(HaiTao_Rs) Then
HaiTao_Rs.Close
Set HaiTao_Rs = Nothing
End If
If IsObject(HaiTao_Conn) Then
HaiTao_Conn.Close
Set HaiTao_Conn = Nothing
End If
End Sub

End Class
%>
------------------------------------------------------------------
测试插入数据:Insert.asp
<!--#include file="Conn.asp" -->
<%
Dim i
Response.Write "每次插入1W条记录"
For i = 0 To 9999
Conn.Execute("Insert Into DataTable(Title,Content,AppendDate) Values('翎风天下','没有你做不到的,只有你想不到的','"& Now() &"')")
Next
%>
------------------------------------------------------
调用显示信息:Show.asp
<!--#Include File="Conn.asp"-->
<!--#include file="PageClass.asp" -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
<!--
body{margin:0;font-size:12px}
td{white-space:nowrap;padding:5px}
a:hover {color: #fff;}
.one A {width: 83px}
.one a:hover{ background:#f00;}
-->
</style>
</head>
<body>
<table align="center" width="70%" border="0" cellspacing="1" cellpadding="0" bgcolor="#cccccc">
<tr bgcolor="#f0f0f0">
<td align="center">ID</td>
<td align="center">标题</td>
<td align="center">内容</td>
<td align="center">发表时间</td>
</tr>
<%
Dim BeginTime,EndTime
BeginTime=Timer

Dim PageClass,Result,i,RecordCount
'Dim PageSize,PageCount
On Error Resume Next
Set PageClass = New PaginationClass '建立分页对象
PageClass.Conn = Conn '数据库连接
PageClass.PageSize = 20 '每页记录数,如果不设置即为默认值10
PageClass.SignHow = 5 '左右导航的数量,如果不设置即为默认值5
PageClass.Style = True '左右导航的数量,如果不设置即为默认值False
PageClass.Sql = "Select * From DataTable" '查询语句
Result = PageClass.Result '获取返回的二维数组,遍历数组要比遍历记录集速度快
RecordCount = PageClass.RecordCount '获取记录总数
'PageCount = PageClass.PageCount
If RecordCount > 0 Then
For i = 0 To Ubound(Result,2) '遍历数组,Ubound(Result,2)获取数组的下限(不需要变动),如果每页显示20条记录,当前值为19 'Result(0,i)是对应第一列的数据,Result(1,i)对应第二列的数据,依次类推,也可嵌套循环输出列
%>
<tr bgcolor="#ffffff" class="one">
<td align="center"><%=Result(0,i)%></td>
<td><%=Result(1,i)%></td>
<td><%=Result(2,i)%></td>
<td align="center"><%=Result(3,i)%></td>
</tr>
<%
Next
End If
%>
</table>
<%
PageClass.ShowPage
EndTime=Timer
Response.Write "<div align=""center"">"& Round((EndTime-BeginTime)*1000,3) &"</div>"
%>
</div>
</body>
</html>
--------------------------------------------------------------------

不好你打我。。。。不好你打我。。。。不好你打我。。。。不好你打我。。。。

28,404

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧