| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1608 人关注过本帖, 1 人收藏
标题:多条件查询后分页出错问题
只看楼主 加入收藏
lyuyyw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-3-19
收藏(1)
 问题点数:0 回复次数:6 
多条件查询后分页出错问题

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

我做了个多条件查询记录页面,查询没有出错,显示一也没有问题,但是我的查询数据量非常大,一页显示肯定不行,我试了个分页技术,(分页效果在静态sql语句上也没有问题),但是当sql语句是动态的时候,分页就出错了。看了阳光白雪斑竹回答别人的帖子,有点启发,把sql语句存在session变量里面,但是分页参数俺不是太懂,现将部分代码贴出来,望高手解决啊!!
=====接受查询条件=====
bianhao=trim(replace(request.form("bianhao"),"'","''"))
zhaopian=request.form("zhaopian")
sex=request.form("sex")
nianling=trim(replace(request.form("nianling"),"'","''"))
……
=====写出sql语句=====
sql="select * from member where "
=====生成动态sql语句====
if bianhao<>"" then sql=sql&" member_bianhao='"&bianhao&"' and"
if zhaopian<>"不限" then sql=sql&" member_photo<>'' and"
if sex<>"不限" then sql=sql&" member_sex='"&sex&"' and"
if shouru<>"" then sql=sql&" member_earn>='"&shouru&"' and"
……
======处理全为空的情况=====
if right(sql,5)="where" then sql=left(sql,clng(len(sql))-5) /查询条件为空时,去掉上面sql语句的"where"
if right(sql,3)="and" then sql=left(sql,clng(len(sql))-3) /去掉语句最后的“and”
sql=sql&" order by member_reg asc"
rs.open sql,conn,1,1

====开始分页代码=====问题就出在下面的代码里面
IF (rs.State =adStateClosed) or (rs.BOF=true and rs.EOF =true) or rs.RecordCount=0 THEN
RESPONSE.Write"<BR><BR>   暂时还没有会员记录...  <br>"
ELSE
dim page,ipage
rs.pagesize=10
page=request("Page")
pages(page)
page=clng(Page)
if page > rs.pagecount then response.redirect "login.asp"
if page=empty then page=1
rs.absolutepage=page
for ipage=1 to rs.pagesize
%>
……………… / 在此省略 输出格式

<%Rs.movenext
If rs.eof Then exit For
Next%>
<%
if page=empty then page=1
if page < 1 then page=1
if page > rs.pagecount then page=rs.pagecount
%>
共<font color=ff0000><b><%=rs.recordcount%></b></font>条记录 共<font color=ff0000><b><%=rs.pagecount%></b></font>页</td>
<td width="89" align="center" valign="bottom" style="color:#A5537B;padding-bottom:7px;">第
<select class=dh name=select onChange=mychange(value) size="1" style="font-family: 宋体;border:1px solid; font-size: 9pt;color:#333333;">
<%for i=1 to rs.pagecount%>
<%if i=page then%>
<option value=<%=Request.ServerVariables("SCRIPT_NAME")%>?Page=<%=i%> selected><%=i%></option>
<%else%>
<option value=<%=Request.ServerVariables("SCRIPT_NAME")%>?Page=<%=i%>><%=i%></option>
<%end if%>
<%next%>
</select>
页 </td>
<td width="324" align="center" style="color:#A5537B;">
<%if page<>1 then%>
<a href=<%=Request.ServerVariables("SCRIPT_NAME")%>?Page=1><img src="images/index.gif" alt="首页" width="72" height="17" hspace="3" border="0"></a><a href=<%=Request.ServerVariables("SCRIPT_NAME")%>?Page=<%=(page-1)%>><img src="images/pre01.gif" alt="上一页" width="72" height="17" hspace="3" border="0"></a><%else%><img src="images/index.gif" alt="首页" width="72" height="17" hspace="3" border="0"><img src="images/pre01.gif" alt="上一页" width="72" height="17" hspace="3" border="0"><%end if%><% if page<>rs.pagecount then%><a href=<%=Request.ServerVariables("SCRIPT_NAME")%>?Page=<%=(page+1)%>><img src="images/next01.gif" alt="下一页" width="72" height="17" hspace="3" border="0"></a><a href=<%=Request.ServerVariables("SCRIPT_NAME")%>?Page=<%=rs.pagecount%>><img src="images/end.gif" alt="尾页" width="72" height="17" hspace="3" border="0"></a>
<%else%><img src="images/next01.gif" alt="下一页" width="72" height="17" hspace="3" border="0"><img src="images/end.gif" alt="尾页" width="72" height="17" hspace="3" border="0">
<%end if%><script language=javascript>
function mychange(v){
if (v==""){}
else{
window.open (v,target="_self")
}
}
</script> </td>
</tr>
</table>
<%
rs.close
set rs=nothing
END IF%>


======我做了所有全为空时sql语句输出测试分页前后sql语句的变化情况见附贴图片======


搜索更多相关主题的帖子: 条件 查询 
2007-08-21 16:46
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
收藏
得分:0 

[QUOTE]''=====接受查询条件=====
bianhao=trim(replace(request.form("bianhao"),"'","''"))
zhaopian=request.form("zhaopian")
sex=request.form("sex")
nianling=trim(replace(request.form("nianling"),"'","''"))
……
''=====写出sql语句=====
sql="select * from member where 1=1" ''构造一个永真条件来完善SQL语句
''=====生成动态sql语句====
if bianhao<>"" then sql=sql&" and member_bianhao='"&bianhao&"'"
if zhaopian<>"不限" then sql=sql&" and member_photo<>''"
if sex<>"不限" then sql=sql&" and member_sex='"&sex&"'"
if shouru<>"" then sql=sql&" and member_earn>='"&shouru&"'"
……
''======处理全为空的情况=====
''下面这个几不需要了
'' if right(sql,5)="where" then sql=left(sql,clng(len(sql))-5) /查询条件为空时,去掉上面sql语句的"where"
'' if right(sql,3)="and" then sql=left(sql,clng(len(sql))-3) /去掉语句最后的“and”
'' sql=sql&" order by member_reg asc"
''===============注意这里==================
''接收当前页码,并做相应处理
page = request("Page")
''如果page是空,说明是一次新查询
if page = "" Or IsNull(page) Then
session("searcheSql") = Sql ''新查询时把带有查询条件的SQL存放到session中
elseif session("searcheSql") = "" then
Sql = session("searcheSql") ''翻页时从SESSION中读取带有查询条件的SQL
end if
If Page = "" Or Not IsNumeric(Page) Then
Page = 1
End If
''=========================================
rs.open sql,conn,1,1
''====开始分页代码=====问题就出在下面的代码里面
IF (rs.State =adStateClosed) or (rs.BOF=true and rs.EOF =true) or rs.RecordCount=0 THEN
RESPONSE.Write"<BR><BR>   暂时还没有会员记录...  <br>"
ELSE
dim page,ipage
rs.pagesize=10
''page=request("Page")
pages(page)
page=clng(Page)
if page > rs.pagecount then response.redirect "login.asp"
if page=empty then page=1
rs.absolutepage=page[/QUOTE]


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2007-08-21 17:01
lyuyyw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-3-19
收藏
得分:0 

谢谢斑竹的关注啊,我按你说的修改了,但是提示错误:记录集的打开与否跟分页有很大关系是吧??
麻烦你再看看我的这段代码有什么问题,错误提示如图所示”



dim page,ipage
rs.pagesize=10
page=request("Page")
pages(page)
page=clng(Page)
if page = "" Or IsNull(page) Then
session("searcheSql") = sql ''新查询时把带有查询条件的SQL存放到session中
elseif session("searcheSql") = "" then
sql = session("searcheSql") ''翻页时从SESSION中读取带有查询条件的SQL
end if
rs.open sql,conn,1,1
IF (rs.State =adStateClosed) or (rs.BOF=true and rs.EOF =true) or rs.RecordCount=0 THEN
RESPONSE.Write"<BR><BR>   暂时还没有网友加入...  <br>"
ELSE

if page > rs.pagecount then response.redirect "login.asp"

if page=empty then page=1

rs.absolutepage=page

for ipage=1 to rs.pagesize
%>

图片附件: 游客没有浏览图片的权限,请 登录注册


誓死捍卫asp的领导地位!
2007-08-21 17:29
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
收藏
得分:0 

上面的原因应该是由于传入的值入你数据库中字段的数据类型不匹配造成的


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2007-08-21 17:47
lyuyyw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-3-19
收藏
得分:0 
那个提示是参数类型不正确,但是我要是没有分页的话就正常啊,而且我用session变量测试了一下,好像没有用,输出的sql语句在第一页正常,但是第二页就出错了,问题跟我发贴是一样的啊 ,好像是session就没有用,,期待解决啊!!我老觉得我按你说得修改得有问题,分页是原理是先把整个符合条件得记录存起来然后再按每页最大记录数分页吗?按我错误来看,分页前后sql语句变化了 啊!!
麻烦斑竹看看啊1!!!

誓死捍卫asp的领导地位!
2007-08-21 17:59
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
把搜索条件也写入分页里面,不然第一面对的,后面就不对了
比如如下语前面加
searchstr=""
if bianhao<>"" then sql=sql&" and member_bianhao='"&bianhao&"'"
searchstr=searchstr &"&member_bianhao="&bianhao
在分面时把这个条件加入即可
2007-08-21 19:12
lyuyyw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-3-19
收藏
得分:0 

已经解决!!!
先将处理方法分享一下啊 !原来分页是把原来得页面重新读一边(象当于重新生成了sql语句),知道这个之后,我按阳关白雪说得,用session变脸存储了sql语句,但是我没有把表单直接提交到结果显示页面(即接受表单数据,处理表单,生成sql语句的代码跟记录集分页代码在一块),而是增添了一个表单数据处理页,用来接受表单数据,生成sql语句,然后用response.redirect语句转到分页界面(用session变量传值sql语句)就可以分页正常显示了 !!


誓死捍卫asp的领导地位!
2007-08-22 10:40
快速回复:多条件查询后分页出错问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022035 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved