您好,欢迎访问一九零五行业门户网

浅谈ACCESS数据库技术的2种分页核心思想

access分页 技术 思想 a: 程序代码 select top 分页数 * from 表 where 主键 not in (select top 第几页*分页数 主键 from 表 where 过滤条件) access分页 技术 思想 b: 程序代码 select top 页大小 * from 表1 where 主键 (select min(主键) from (select
access分页技术思想a:
程序代码
select top 分页数 * from 表 where 主键 not in (select top 第几页*分页数 主键 from 表 where 过滤条件)
access分页技术思想b:
程序代码
select top 页大小 * from 表1 where 主键   
相比这两种设计思想,就大容量的数据而言,譬如一表几万条数据的显示的时候,就能明显的感觉出,前者比后者快了,因为前者不用建立后台临时表处理!,少了一个环节!不过简单的说,还是很容易理解的
打个比方,我一页要五行数据,现在是第三页,那么第几页应该等于需要要的页数乘以记录!
一个基于此思路的分页函数应用:
程序代码
function showclass(page, fcount, order, desc)   
    if page = or len(page) = 0 then page = 1
skinstr =   
     pagestr =   
     skintatol = conn.execute(select count(*) from skin)(0)
filtwheres = order by &order &desc
if page > 1 then   
         skinsql = select top & fcount skin_id,skin_name,skin_designer,skin_pubdate,skin_designerurl,skin_designermail,skin_geterip,skin_gettime,localskininfopreview,skin_randromnumber,skin_downcouns,skin_fromurl from skin where skin_id not in (select top & ((page -1)* fcount) skin_id from skin &filtwheres) & filtwheres   
     else   
        skinsql = select top & fcount skin_id,skin_name,skin_designer,skin_pubdate,skin_designerurl,skin_designermail,skin_geterip,skin_gettime,localskininfopreview,skin_randromnumber,skin_downcouns,skin_fromurl from skin & filtwheres   
     end if
'------------------ www.knowsky.com 分页栏 ---------------------   
            total = skintatol '取总数   
            per = fcount '每页显示条数   
            pages = total / per '总共的页数
if pages int(pages) then   
                pages = int(pages) + 1   
            else  
                pages = pages   
            end if
if (page * per) >= total then   
                bn = total   
            else  
                bn = page * per   
            end if
if pages                 if page > 5 then   
                    a = page - 4   
                    b = page + 4   
                    if b > pages then b = pages   
                else   
                    a = 1   
                    b = pages   
                end if   
            else   
                if page > 5 then   
                    a = page - 4   
                    b = page + 4   
                    if b > pages then b = pages   
                else   
                    a = 1   
                    b = 9   
                end if   
            end if
'------------- start --------------------   
            pagestr = pagestr &
pagestr = pagestr &
for i = a to b   
                if page = i then   
                    pagestr = pagestr & & i &   
                else   
                    pagestr = pagestr & & i &   
                end if   
            next
pagestr = pagestr & >   
            pagestr = pagestr &
'------------- end --------------------
set skindb = conn.execute(skinsql)   
            if skindb.bof or skindb.eof then   
                skinstr = skinstr & none  
            else   
                web_len = 1   
                skinstr = skinstr &   
                do while not skindb.eof   
                    if web_len mod 4 = 0 then    
                        bleft =   
                        bright =   
                    elseif web_len mod 4 = 1 then   
                        bleft =   
                        bright =   
                    else   
                        bleft =   
                        bright =   
                    end if   
                        skinstr = skinstr & bleft &
&skindb(skin_name)
& bright   
                    web_len = web_len + 1   
                skindb.movenext   
                loop   
                skinstr = skinstr &
end if    
            showclass = pagestr & skinstr    
end function
%>
其它类似信息

推荐信息