CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

条件查询中的分页问题

楼主aha111(野百合)2001-05-29 15:29:00 在 Web 开发 / ASP 提问

按客户给出的条件,如时间段,号码,名称等来查询数据,可是不知怎么样做到显示第二页时的数据还是满足同样条件的数据 问题点数:20、回复次数:9Top

1 楼Greendgh(自在)回复于 2001-05-29 15:36:00 得分 0

可以把条件保存在一个Session变量中。Top

2 楼freezwy(网络自由人)回复于 2001-05-29 18:24:00 得分 0

看看这个代码,里面定义一个函数.  
  <%  
        const   MaxPerPage=20  
        dim   totalPut        
        dim   CurrentPage  
        dim   TotalPages  
        dim   i,j  
        if   not   isempty(request("page"))   then  
              currentPage=cint(request("page"))  
        else  
              currentPage=1  
        end   if  
        %>  
  <HTML><TITLE>搜索结果</TITLE>  
  <link   rel=stylesheet   href=../style.css>  
  <BODY   topmargin=0   bgcolor="#FFFFFF"   oncontextmenu="javascript:self.event.returnValue=false">  
  <%  
  skey=trim(request("acode"))  
  if   skey=""   or   len(skey)<>4   then  
      response.redirect   "s_area.asp?error="&"意外错误!"  
  end   if  
  sql="select   a.comname,b.username,b.cid,b.vname,b.applynum,b.salary,b.addtime   from   company   a,cposition   b   where   b.hukou   like   '%"&skey&"%'   and   a.loginname=b.username"  
  Set   rs=   Server.CreateObject("ADODB.Recordset")  
  rs.open   sql,session("conn"),1,1  
      if   rs.eof   and   rs.bof   then  
                response.write   "<p>&nbsp;<p   align='center'>   目   前   还   没   有   任   何   信   息</p><p>&nbsp;"  
        else  
              totalPut=rs.recordcount  
              if   currentpage<1   then  
                      currentpage=1  
              end   if  
              if   (currentpage-1)*MaxPerPage>totalput   then  
        if   (totalPut   mod   MaxPerPage)=0   then  
            currentpage=   totalPut   \   MaxPerPage  
        else  
              currentpage=   totalPut   \   MaxPerPage   +   1  
        end   if  
              end   if  
                if   currentPage=1   then  
            showpage   totalput,MaxPerPage,"sarea.asp",vtype,skey  
                          showContent  
              showpage   totalput,MaxPerPage,"sarea.asp",vtype,skey  
                else  
                      if   (currentPage-1)*MaxPerPage<totalPut   then  
                          rs.move     (currentPage-1)*MaxPerPage  
                          dim   bookmark  
                          bookmark=rs.bookmark  
            showpage   totalput,MaxPerPage,"sarea.asp",vtype,skey  
                          showContent  
                            showpage   totalput,MaxPerPage,"sarea.asp",vtype,skey  
                  else  
                  currentPage=1  
          showpage   totalput,MaxPerPage,"sarea.asp",vtype,skey  
                        showContent  
                        showpage   totalput,MaxPerPage,"sarea.asp",vtype,skey  
              end   if  
        end   if  
          end   if  
          rs.close        
        set   rs=nothing      
        sub   showContent  
      i=0  
  %>  
  <table   border=0   cellspacing=1   width="91%"   align="center"   cellspacing=0   cellspadding=0>  
      <tr   bgcolor="#f3f3fa">    
          <td   align=middle   width="6%">    
              <div   align="center"><font   color="#0000FF"><span   >序号</span></font></div>  
          </td>  
          <td   align=middle   width="31%">    
              <div   align="center"><font   color="#0000FF"><span   >公司名称</span></font></div>  
          </td>  
          <td   align=middle   width="23%">    
              <div   align="center"><font   color="#0000FF"><span   >招聘职位</span></font></div>  
          </td>  
          <td   align=middle   width="11%">    
              <div   align="center"><font   color="#0000FF"><span   >招聘人数</span></font></div>  
          </td>  
          <td   align=center   width="13%"><font   color="#0000FF"><span   >薪金</span></font></td>  
          <td   align=middle   width="16%">    
              <div   align="center"><font   color="#0000FF">发布日期</font></div>  
          </td>  
      </tr>  
      <%do   while   not   rs.eof%>  
      <tr>    
          <td   align=middle   bgcolor=#ffffff   width="6%">    
              <%if   currentpage=1   then%>  
              <%=i+1%>    
              <%else%>  
              <%=maxperpage*currentpage+i%>    
              <%end   if%>  
          </td>  
          <td   bgcolor=#ffffff   width="31%"   >    
          <a   href="company.asp?cid=<%=trim(rs(1))%>"   ><%=replace(rs(0),skey,"<font   color=red>"&skey&"</font>")%></a></td>  
          <td   bgcolor=#ffffff   width="23%"   !align="center">   <a   href="jobinfo.asp?cid=<%=trim(rs(1))&"&jobno="&rs(2)%>"><%=rs(3)%></a></td>  
          <td   align=center   bgcolor=#ffffff   width="11%"   >    
              <%if   rs(4)=0   then%>  
              不限    
              <%else%>  
              <%=rs(4)%>    
              <%end   if%>  
          </td>  
          <td   align=right   bgcolor=#ffffff   width="13%"   >    
              <%if   split(rs(5),"-")(0)=0   then  
                                response.write   "面议"  
                          else  
                      select   case   split(rs(5),"-")(2)  
                              case   1  
                                  response.write   "年薪:"  
                              case   2  
                                  response.write   "月薪:"  
                              case   3  
                                  response.write   "日薪:"  
                              case   4  
                                  response.write   "时薪:"  
                        end   select  
                        response.write   split(rs(5),"-")(0)&"&nbsp;"  
                        select   case   split(rs(5),"-")(1)  
                            case   0  
                                response.write   "RMB"  
                            case   1  
                                response.write   "US$"  
                            case   2  
                                response.write   "HK$"  
                          end   select  
                        end   if  
                      %>  
          </td>  
          <td   align=right   bgcolor=#ffffff   width="16%"   ><%=formatdatetime(rs(6),1)%></td>  
      </tr>  
      <%   i=i+1  
  if   i>=MaxPerPage   then   exit   do    
  rs.movenext    
  loop    
  %>  
  </table>  
  <p>    
      <%   end   sub      
    function   showpage(totalnumber,maxperpage,filename,ctype,keyw)    
      dim   n    
      if   totalnumber   mod   maxperpage=0   then    
            n=   totalnumber   \   maxperpage    
      else    
            n=   totalnumber   \   maxperpage+1    
      end   if    
      response.write   "<form   method=Post   action="&filename&">"    
      response.write   "<p   align='center'>"    
      if   CurrentPage<2   then    
          response.write   "首页   上一页&nbsp;"    
      else    
  response.write   "<a   href="&filename&"?page=1"&"&ctype="&ctype&"&skey="&keyw&">首页</a>&nbsp;"    
  response.write   "<a   href="&filename&"?page="&CurrentPage-1&"&ctype="&ctype&"&skey="&keyw&">上一页</a>&nbsp;"    
      end   if    
      if   n-currentpage<1   then    
          response.write   "下一页   尾页"    
      else    
          response.write   "<a   href="&filename&"?page="&(CurrentPage+1)&"&ctype="&ctype&"&skey="&keyw    
          response.write   ">下一页</a>   <a   href="&filename&"?page="&n&"&ctype="&ctype&"&skey="&keyw&">尾页</a>"    
      end   if    
        response.write   "&nbsp;页次:<strong><font   color=red>"&CurrentPage&"</font>/"&n&"</strong>页   "    
          response.write   "&nbsp;共<b>"&totalnumber&"</b>条信息   <b>"&maxperpage&"</b>条信息/页   "    
        response.write   "   转到:<input   type='text'   name='page'   size=2   maxlength=10   class=smallInput   value="&currentpage&">"    
        response.write   "&nbsp;<input   type='submit'   class=buttonface   value='转到'     name='cndok'></span></p></form>"    
  end   function    
  %>  
  </p>  
  </BODY>  
  </HTML>  
   
  Top

3 楼zjtn(梦居士)回复于 2001-05-29 20:06:00 得分 0

你是不是没有给rs.absolutePage赋值?Top

4 楼firedragoninhell(SZGODDON)回复于 2001-05-29 20:20:00 得分 0

多传参数啦,在程序中多做一些判断就行了。Top

5 楼firedragoninhell(SZGODDON)回复于 2001-05-29 20:23:00 得分 5

可以这样思考:  
  不管到那一页,实际上根据所需页数和各种条件,重新进行了一次查询。Top

6 楼aha111(野百合)回复于 2001-05-31 10:42:00 得分 0

我好象给不了分。  
  Greendgh(天高鸟):好  
  firedragoninhell(地獄炎龍):我以前都是象你说的那样做,可是现在条件太多,参数太多,搞得判断逻辑好混乱,而且要重新查浪费时间,有没有简单可行的办法?有没有办法可以把查询结果的数据集保存下来?  
  Top

7 楼Greendgh(自在)回复于 2001-06-01 09:10:00 得分 10

If   IsObject(Session("M1_rs"))   Then  
          Set   rs   =   Session("M1_rs")  
  Else  
          sql   =   "SELECT   *   FROM   [M1]"加上你的条件  
          Set   rs   =   Server.CreateObject("ADODB.Recordset")  
          rs.Open   sql,   conn,   3,   3  
          If   rs.eof   Then  
                  rs.AddNew  
          End   If  
          Set   Session("M1_rs")   =   rs  
  End   IfTop

8 楼Go_Rush(我的技术博客http://ashun.cnblogs.com/)回复于 2001-06-01 09:54:00 得分 5

你的问题我也遇到过,可以这样解决.  
  1.在页面开始时先判断页面的提交方式,如果是post方法  
  (用户选择了查询条件,并按下了提交这个按钮),则处理用户的条件,生成sql语句,  
  把你的Sql语句存在session中,再执行sql查询,  
  2.如果是get方法,(一般是用户,按下了"下一页","尾页"等按钮,)则从session中取  
  sql语句,  
        sql=session(QUERY_SQL)    
        conn.execute   sql  
          ......  
  3.一但查询的条件有所改变,你更新session(QUERY_SQL)的值即可  
   
  BTW:有没有办法可以把查询结果的数据集保存下来?  
  这种方式是不可行的,跨页保存查询结果的数据集,  
  1。如果用到session数组,耗费的服务器的内存是巨大的,仅几十个并发用户查询就有可能让你的服务器当机  
  2。如果用文件保存查询结果的数据集,其操作之烦会使你的程序更复杂,而且速度也比再次查询  
  快不了多少  
   
  祝你成功,问题解决了要给分哦  
  Top

9 楼aha111(野百合)回复于 2001-06-01 10:21:00 得分 0

//Top

相关问题

  • 分页中查询的问题
  • 组合查询,条件很多,要分页,
  • 关于分页时怎么传递查询条件的问题?
  • 我想查询出符合查询条件的记录中的第11-20条记录,where子句应当如何增加限制条件?(用于分页显示)
  • 查询后分页
  • 在SYBASE的SQL查询中,怎样给查询结果分页?
  • 分页:多条件查询时,查询条件放到什么地方?url?form?session?
  • 问个关于分页和查询输入条件保留的问题
  • 在分页查询中如何传递日期参数?
  • 分页时,查询sql语句中有%,出问题

关键词

  • asp
  • totalput
  • maxperpage
  • currentpage
  • skey
  • rs
  • then
  • response
  • else

得分解答快速导航

  • 帖主:aha111
  • firedragoninhell
  • Greendgh
  • Go_Rush

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo