注册 登录
编程论坛 ASP技术论坛

[求助] 在一个页面中进行条件查询并

robinbest 发布于 2007-11-04 20:36, 659 次点击
哪位前辈帮我看下这段程序:
说明: 这段程序是一个简单的查询并显示结果的程序,页面上有一表单,在文本框内输入条件按查询后将结果显示在下面的表格里;底部有分页功能。

问题:为什么在填入查询条件后如果查询结果有多页的话,单击页数后原来的查询结果和查询条件都没了?

<!--#include file="con.asp" -->
<div align="center"> <p>订单明细查询</p></div>
<table width="95%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td >
<form action="pu.asp" method="post" target="_self"> 'pu.asp就是本页面
订单编号:<input size=20 name=puno>
日期:<INPUT size=20 name=date>
<input name="Submit" type="submit" value=" 筛选记录 ">
</form>
</td>
</tr>
</table>

<table width = 95% align = center cellspacing = 1 cellpadding = 2 border=1
bordercolor=#9999FF bordercolordark=#FFFFFF bordercolorlight=#E1F5FF>
<tr>
<td align=center width=42%><strong>日期</strong></td>
<td align=center width=58%><strong>订单编号</strong></td>
</tr>
<%
ccpuno = Request.form("puno")
Set rs = Server.CreateObject("ADODB.RecordSet")
IF Len(ccpuno)=0 Then
sql="Select * from pu order by date desc"
else
sql="Select * from pu where pu.puno like '%"&ccpuno&"%' order by date desc"
end if
rs.Open sql,conn,1,3
if rs.eof and rs.bof then
response.Write "目前没有记录"
else
counts=50 '每面显示50条记录
rs.pageSize = counts
allpages = rs.pageCount
page = Request("page")
If not isNumeric(page) then page=1
if isEmpty(page) or Cint(page) < 1 then
page = 1
elseif Cint(page) >= allPages then
page = allPages
end if
rs.AbsolutePage = page
Do While (Not rs.eof) and counts>0
%>
<tr>
<td><div align="left"><span class="STYLE2"><%=rs("date")%>&nbsp;</span></div></td>
<td><div align="left"><span class="STYLE2"><%=rs("puno")%>&nbsp;</span></div></td>
</tr>
<%
counts = counts - 1
rs.movenext
if rs.eof then exit do
loop
End If
%>
</table>
<%
response.write "<br><a href='#top'>【Top】</a>&nbsp;当前共有"&RS.RecordCount&"条记录 "
if page = 1 then
response.write "<font color=darkgray>首页 上一页</font>"
else
response.write "<a href=pu.asp?page=1>首页</a> <a href=pu.asp?
page="&page-1&"> 上一页</a>"
end if
if page = allpages then
response.write "<font color=darkgray> 下一页 末页</font>"
else
response.write " <a href=pu.asp?page="&page+1&">下一页</a> <a href=pu.asp?
page="&allpages&">末页</a>"
end if
response.write " 第"&page&"页/共"&allpages&"页 "
%>




[此贴子已经被作者于2007-11-5 8:24:53编辑过]

8 回复
#2
dushui2652007-11-04 21:12
这是属于页面传递的时候参数丢失了问题,我也遇到过这种情况,
我是用session来暂时保存起来的
把ccpuno = Request.form("puno")接收到的值先存到session中,可以把这一句改为
session("ccpuno")=request.form("puno")
if session("ccpuno")<>"" then
ccpuno=session("ccpuno")
end if
#3
madpbpl2007-11-05 04:06
要把搜索条件也加到分页中去
IF Len(ccpuno)=0 Then
sql="Select * from pu order by date desc"
else
sql="Select * from pu where pu.puno like '%"&ccpuno&"%' order by date desc"
end if
改成
dim SearchStr
SearchStr=""
If len(ccpuno)=0 Then
sql ="Select * from pu order by date desc"
SearchStr=""
else
sql ="select * from pu where pu.puno like '%" & ccpuno & "%' order by date desc"
SearchStr=SearchStr &"&puno="&puno
end if

把前面的
ccpuno = Request.form("puno")
改成
ccpuno = Request("puno")


在后面的分页改成(以下一页为例)
a href=deliorder.asp?page="&page+1&"SearchStr

网吧,没有测试.
#4
robinbest2007-11-05 09:57
多谢 2楼和3楼 的朋友!

不过还不行哟! 我认为这个问题还是出在分页上面,烦请更多的高手相助!

另个请教3楼的:
把 ccpuno = Request.form("puno") 改成 ccpuno = Request("puno")
什么意思?
#5
hmhz2007-11-05 10:42
原本分页没问题的话,那就要在查询后,分页上就要带上查询的条件了
<%
ccpuno = Request("puno")

response.write "<br><a href='#top'>【Top】</a>&nbsp;当前共有"&RS.RecordCount&"条记录 "
if page = 1 then
response.write "<font color=darkgray>首页 上一页</font>"
else
response.write "<a href=pu.asp?page=1&ccpuno="&ccpuno&">首页</a> <a href=pu.asp?
page="&page-1&"&ccpuno="&ccpuno&"> 上一页</a>"
end if
if page = allpages then
response.write "<font color=darkgray> 下一页 末页</font>"
else
response.write " <a href=pu.asp?page="&page+1&"&ccpuno="&ccpuno&">下一页</a> <a href=pu.asp?
page="&allpages&"&ccpuno="&ccpuno&">末页</a>"
end if
response.write " 第"&page&"页/共"&allpages&"页 "
%>

[此贴子已经被作者于2007-11-5 10:44:46编辑过]

#6
madpbpl2007-11-05 11:23

Request("puno")
相当于
Request.form("puno")或Request.Qyertstring("puno")

#7
qhscqb2007-11-05 11:47
以下是引用hmhz在2007-11-5 10:42:17的发言:
原本分页没问题的话,那就要在查询后,分页上就要带上查询的条件了
<%
ccpuno = Request("puno")

response.write "<br><a href='#top'>【Top】</a>&nbsp;当前共有"&RS.RecordCount&"条记录 "
if page = 1 then
response.write "<font color=darkgray>首页 上一页</font>"
else
response.write "<a href=pu.asp?page=1&ccpuno="&ccpuno&">首页</a> <a href=pu.asp?
page="&page-1&"&ccpuno="&ccpuno&"> 上一页</a>"
end if
if page = allpages then
response.write "<font color=darkgray> 下一页 末页</font>"
else
response.write " <a href=pu.asp?page="&page+1&"&ccpuno="&ccpuno&">下一页</a> <a href=pu.asp?
page="&allpages&"&ccpuno="&ccpuno&">末页</a>"
end if
response.write " 第"&page&"页/共"&allpages&"页 "
%>

此贴正解
就是说,在网页查询提交后,不用使用SESSION,直接用Request就行,它包括第一次查询时的表单值,而且还有换页时的request.querrystring("puno")

#8
huoqilin2007-11-05 14:55
<a href=pu.asp?page="&page+1&">下一页</a>

改成

<a href=pu.asp?page="&page+1&puno=request.form("puno")">下一页</a>

[此贴子已经被作者于2007-11-5 14:56:45编辑过]

#9
robinbest2007-11-05 19:31
多谢所有楼上的朋友,问题解决,5楼正解!
1