在Access下分页怎么写?

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

要求每页都只读出显示的数据,比如一页显示50条数据,则第一页读1-50条,第二页读51-100条  
  看到的资料都是sql2000下的

· 网友精彩回答:

发表者:mysterious

可以把access数据转换成xml文件做数据源,然后再使用xpath选取你想要的数据  
 

发表者:net_lover

http://dotnet.aspx.cc/showdetail.aspx?id=b12283de-db20-4322-accc-12724442808a

发表者:leeight

我想这个需要自己写一个吧,   不知道能不能用存储过程  
  传递的参数应该就是当前的页数,   然后开始计算下一页开始的id  
  int   pagesize   =   5;  
  int   nextpagestartid   =   (currentpage   +   1)   *   pagesize   -   1;  
  int   nextpageendid       =   (currentpage   +   2)   *   pagesize   -   1;  
  string   sql   =   "select   *   from   yourtable   ";  
              sql   +=   "where   id   between   @nextpagestartid   and   @nextpageendid   ";  
  基本原理好像就是这样子的,   不过还有很多细节需要注意的。  
  比如id不是连续的话,这样写好像就有些问题........

发表者:hchxxzx

你可以下述函数配合如下地址的分页控件达到你的目标  
  www.webdiyer.com  
   
  在获取数据时,fill命令有一个重载,取值的时候,可仅取你需要的条数出来.如下函数所示.  
  虽然,不能达到完美的程度,但对付百万条记录以下的,完全没有问题.  
   
  ///   <summary>  
  ///   根据开始记录号和欲显示的记录条数生成datatable  
  ///   此取值函数为oracle,你可自行修改为access(oledb)  
  ///   </summary>  
  ///   <param   name="sql">传递sql语句</param>  
  ///   <param   name="p_start">开始记录号</param>  
  ///   <param   name="p_rowcount">欲显示的记录条数</param>  
  ///   <returns>返回datatable</returns>  
  public   datatable   getdt(string   sql,   int   p_start,   int   p_rowcount)  
  {  
  oracledataadapter   myadp   =   new   oracledataadapter(sql,   this.cn);  
   
  dataset   ds   =   new   dataset();  
  try  
  {  
  myadp.fill(ds,p_start,   p_rowcount,   "mypagedatatable");  
  return(ds.tables[0]);  
  }  
  catch(oracleexception   ex)  
  {  
  throw   ex;  
  }  
  }  
 

发表者:leecamus

select   top   10   *  
  from   t_type  
  where   c_typecode   not   in   (select   top   20   c_typecode   from   t_type   where   c_typename   like   "*药*"   or   c_typename   like   "*类*")   and   (c_typename   like   "*药*"   or   c_typename   like   "*类*")  
   
  上面是查询表t_type中c_typename字段中含有"药"或"类"的第21-30条记录。  
  注意:  
  1.sql   server中可以在子select中用top   0,access却不行。  
  2.sql   server中like的%在access中变成了*  
  3.如果有条件限制,那么外部select和内部了select都要加上,并且注意外部条件的书写

发表者:eyych

select   top   50   *    
  from   table1  
  where   id<  
  (  
  select   min(id)   from  
  (select   top   (页数-1)*50   id   from   table1   order   by   id   desc)  
  )  
  order   by   id   desc

发表者:fphuang

http://www.webdiyer.com/  
  access数据库分页示例   sql   server数据库分页示例   帮助文档     代码工具     下载控件       faq     留言

发表者:cs_battleship

dataadapter的fill()方法

发表者:zyug

access下好多语句不能用

发表者:benq2003

还有一办法,每条记录前加一个id号,那么每次在where条件里,写上id>前页结束的记录号即可。  
  如:     select   *   from   table1   where   id>1   and   id<10   或者   select   top   10   *   from   table1   where   id>1

发表者:benq2003

但是需要修改表结构

发表者:szabcde

2   个   top

发表者:aspdotnet2005

eyych(伦敦7.7大爆炸!)   的方法应该不错,虽然需要计算页数,但页面初次载入的时候计算一次即可。  
 

发表者:yizhixiaozhu

计算总数   那就要查询2次了哈

发表者:cry_out

mark

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved