| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2031 人关注过本帖
标题:老问题:多条件组合查询后分页错误,用Session保存SQL查询语句然后传到下一 ...
只看楼主 加入收藏
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
老问题:多条件组合查询后分页错误,用Session保存SQL查询语句然后传到下一页。
我有一个多条件组合查询,条件最多有20多个,其中还有几个时间段的查询。所以用GET方法传值会很麻烦,想用Session保存SQL查询语句,然后再传到下一页。
和之前很多人遇到的问题一样,我们条件查询后不能点下一页,点下一页是全部数据的下一页,而不是带条件查询的下一页(嗯,这个,应该说清楚了吧?)

我有两个页面,一个是Search.asp用表单来输入查询条件, SearchEnd.asp接收表单的查询条件并显示查询结果。在论坛里搜索到https://bbs.bccn.net/thread-164379-1-1.html,看后有点启发,不过还是搞不定!他最后问题解决了,但是不知道这个response.redirect怎么用呀?写在什么地方呢?

下面是SearchEnd.asp部分代码:
程序代码:
'接收查询条件,
Dim cat
cat=0
ChaXunM=Trim(Replace(Request.Form("ChaXunM"),"'",""))
BaoGaoXH=Trim(Replace(Request.Form("BaoGaoXH"),"'",""))
'此处为省略200字... ...

'=============================================================================================================================

'If条件查询语句
        sql="select * from Reports where "
    if ChaXunM<>"" then
        sql=sql&" ChaXunM = '"&ChaXunM&"' "
        cat=1
    end if
    if BaoGaoXH<>"" and cat=1 then
        sql=sql&" and BaoGaoXH = '"&BaoGaoXH&"' "
        cat=1
    elseif BaoGaoXH<>"" then
        sql=sql&" BaoGaoXH = '"&BaoGaoXH&"' "
        cat=1
    end if
        '此处省略500字... ...
    
'==============================================================================================================================

'判断查询条件是否为空    
    If cat=0 then
        sql="select * from Reports order by id desc"
    ElseIf cat=1 then
        sql=sql&"order by id desc"
    End If

’==============================================================================================================================

'下面抄了https://bbs.bccn.net/thread-164379-1-1.html代码

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
    
'===============================================================================================================================

'我自己的分页代码
    set rs=server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        onepage=20
        rs.pagesize=onepage
        pages=rs.pagecount
        pump=onepage*(page-1)
                '此处省略200字... ...


'==============================================================================================================================

’这里是要显示的查询结果......

'=============================================================================================================================


'关键之处终于到了:我的页面跳转链接
                                                
    if page<6 then
        firstnum=1
        lastnum=6
            if lastnum>pages then lastnum=pages
        else
        firstnum=page-3
        lastnum=page+3
            if lastnum>pages then lastnum=pages
    end if

        '下面是显示 1 2 3 4 5 6 ...的链接
        <a href="?action=search&page=1">&lt;</a>
        <%for i=firstnum to lastnum%>
        <a href="?&page=<%=i%>"><%=i%></a>
        <%next%>
        <a href="?h&page=<%=pages%>"> &gt;</a>


感谢你有耐心看完,感谢帮助!

[ 本帖最后由 towering 于 2012-8-22 18:22 编辑 ]
搜索更多相关主题的帖子: 时间段 查询 
2012-08-22 18:19
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11772
专家分:43421
注 册:2006-5-13
收藏
得分:5 
我也是遇到这个问题,还没有解决呢。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-08-22 20:33
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
收藏
得分:0 
回复 2楼 hu9jj
版主也有这个问题可以找高人一起解决呀!

我的ASP小站:http://www./
2012-08-23 08:24
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11772
专家分:43421
注 册:2006-5-13
收藏
得分:0 
我只是业余的个人网站遇到这个问题,目前比较忙,还没有时间来学习如何解决。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-08-23 21:15
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:15 
楼主,对你的代码做了一些修改,用红色字体标出来了,你调试一下:

'接收查询条件,
Dim cat
cat=0
ChaXunM=Trim(Replace(Request.Form("ChaXunM"),"'",""))
BaoGaoXH=Trim(Replace(Request.Form("BaoGaoXH"),"'",""))
'此处为省略200字... ...

if session("searcheSql") ="" then   
    'If条件查询语句
        sql="select * from Reports where 1=1"
    if ChaXunM<>"" then
        sql=sql&" and ChaXunM = '"&ChaXunM&"' "
        cat=1
    end if
    if BaoGaoXH<>"" and cat=1 then
        sql=sql&" and BaoGaoXH = '"&BaoGaoXH&"' "
        cat=1
    elseif BaoGaoXH<>"" then
        sql=sql&" BaoGaoXH = '"&BaoGaoXH&"' "
        cat=1
    end if
        '此处省略500字... ...

 '判断查询条件是否为空   
    If cat=0 then
        sql="select * from Reports order by id desc"
    ElseIf cat=1 then
        sql=sql&"order by id desc"
    End If
   session("searcheSql") =sql
else
    sql=session("searcheSql")
end if

'下面抄了https://bbs.bccn.net/thread-164379-1-1.html代码
page = request("Page")
''如果page是空,说明是一次新查询
if page = "" Or IsNull(page) Then
    Page = 1
else
    if Page<1 then Page=1
    if Page>Pages then Page=Pages
End If


'我自己的分页代码
    set rs=server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        onepage=20
        rs.pagesize=onepage
        pages=rs.pagecount
        pump=onepage*(page-1)
                '此处省略200字... ...

'==================================================================

’这里是要显示的查询结果......

'===========================================================

'关键之处终于到了:我的页面跳转链接
                                                
    if page<6 then
        firstnum=1
        lastnum=6
            if lastnum>pages then lastnum=pages
     else
        firstnum=page-3
        lastnum=page+3
            if lastnum>pages then lastnum=pages
    end if

        '下面是显示 1 2 3 4 5 6 ...的链接
        <a href="?action=search&page=<%=page-1%>">&lt;</a>
        <%for i=firstnum to lastnum%>
        <a href="?&page=<%=i%>"><%=i%></a>
        <%next%>
        <a href="?action=search&page=<%=page+1%>"> &gt;</a>


最后有一个建议:
    用Session变量传递查询参数,不是一个好办法,如果用户在某页面停留时间长一些,可能就有问题了!

做自己喜欢的事!
2012-08-24 08:51
towering
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:261
专家分:507
注 册:2007-10-9
收藏
得分:0 
首先感谢 netlin ,我昨天晚上搞了一个晚上,问题已经解决了,我再测试一下你的方法,为了更多遇到这个问题的同学

不过我感觉用Session变量传递查询参数是解决这种多条件组合查询最好的方法,我这里只有20多个条件组合,要是200多个条件组合查询呢?如果用GET传递参数那得多长的代码写呀?呵呵,再说,如果这个存储SQL语句的Session过期了,用户的登陆的Session也同样过期,那他只能重新登陆。

最后还是感谢,谢谢~



经测试 netlin 的方法可行,非常感谢~

[ 本帖最后由 towering 于 2012-8-24 09:19 编辑 ]

我的ASP小站:http://www./
2012-08-24 09:07
快速回复:老问题:多条件组合查询后分页错误,用Session保存SQL查询语句然后传到 ...
数据加载中...
 
   



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

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