试试这个
------------------------------
1. 假设 records_per_page 包含每页记录数 2. 查询总记录数并计算总页数  (1) 查询总记录数 total_records select count(*) from your-table-list  
where your-criteria (2) 计算总页数 total_pages total_pages = (total_records + records_per_page - 1) 
/ records_per_page 3. 假设 current_page 包含当前页号 则其约束区间为 [1, total_pages] 4. 计算未显示记录数 not_shown_records not_shown_records = total_records -  
(current_page - 1) * records_per_page 5. 查询当前页所有记录 select top records_per_page * 
from ( 
select top not_shown_records * 
from your-table-list 
where your-criteria 
order by your-sort-field desc 
) a 
order by a.your-sort-field asc 注意: your-sort-field 包含了一个排序字段. 你可以指定 
多个排序字段, 但是必须保证里外包含相同的排序字段. 
外层的每个排序字段前加上"a." 

解决方案 »

  1.   

    还有个算法,相对前者,我更喜欢下面的方法。
    ------------------------------
    直接返回要显示页的记录,不必返回所有记录  SQL  语句的写法如下:  
    pageSQL="select    IDENTITY(int,1,1)  as  Nbr,*    into  #tmp  From  ("  +strSQL  +  ")  as  temp  order  by  Nbr  select  *  from  #tmp  where  nbr  between  41  and  50  drop  table  #tmp  "  
    上述返回了第41到50条记录,根据具体页数进行修改。 
    ------
    说明:我没有在Access下试过,在SQLServer上通过