关于ACCESS快速分页的补充!
来源:互联网 发布:php免费教程 编辑:程序博客网 时间:2024/06/05 19:21
前天看了编datagrid access分页的文章,很不错,但只提到用主键分页,本人整理了一下,写了个通用的分页方法,大家可以参考一下,有什么问题请指出,如下:
public class FastPageSql
{
private int allCount; //表中记录总数
private bool isDesc; //排序方式
private string primaryKey; //表的主键
private string orderKey; //排序键
private string selectFields; //要选择的字段
private string queryCondition; //筛选条件
private string tableName; //表名称
private int perPageCount; //每页显示数
private int pageIndex; //显示页的索引
private int totalIndex; //总页数
private int middleIndex; //中间页数;
public FastPageSql(int allcount,bool isdesc,string primarykey,string orderkey,string tablename,int perpagecount,int pageindex,string selectfields,string querycondition)
{
allCount=allcount;
isDesc=isdesc;
primaryKey=primarykey;
orderKey=orderkey;
selectFields=selectfields;
queryCondition=querycondition;
tableName=tablename;
perPageCount=perpagecount;
pageIndex=pageindex;
totalIndex=getTotalIndex();
middleIndex=(int)(totalIndex/2);
}
private int getTotalIndex()
{
if(allCount%perPageCount>0)
return (int)(allCount/perPageCount)+1;
else
return allCount/perPageCount;
}
public string GetFastPageSql()
{
string sql="";
if(pageIndex<=1)
{
#region 第一页代码
sql="select top "+perPageCount+" "+selectFields+" from "+tableName+" "+((queryCondition!="")?"where "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"desc":"asc")+"";
#endregion
}
else if(1
#region 中间页之前
if(primaryKey==orderKey)
sql="select top "+perPageCount+" "+selectFields+" from "+tableName+" where "+primaryKey+""+((isDesc)?"<":">")+"(select "+((isDesc)?"min":"max")+"("+primaryKey+") from(select top "+perPageCount*(pageIndex-1)+" "+primaryKey+" from "+tableName+" "+((queryCondition!="")?"where "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"desc":"asc")+" )) "+((queryCondition!="")?"and "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"desc":"asc")+"";
else
sql="select "+selectFields+" from (select top "+perPageCount+" "+selectFields+" from (select top "+perPageCount*pageIndex+" "+selectFields+" from "+tableName+" "+((queryCondition!="")?"where "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"desc":"asc")+") order by "+orderKey+" "+((isDesc)?"asc":"desc")+") order by "+orderKey+" "+((isDesc)?"desc":"asc")+"";
#endregion
}
else if(middleIndex
#region 中间页到最后页之间
if(primaryKey==orderKey)
sql="select "+selectFields+" from (select top "+perPageCount+" "+selectFields+" from "+tableName+" where "+primaryKey+""+((isDesc)?">":"<")+"(select "+((isDesc)?"max":"min")+"("+primaryKey+") from (select top "+(allCount-perPageCount*pageIndex)+" "+primaryKey+" from "+tableName+" "+((queryCondition!="")?"where "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"asc":"desc")+" )) "+((queryCondition!="")?"and "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"asc":"desc")+") order by "+orderKey+" "+((isDesc)?"desc":"asc")+"";
else
sql="select top "+perPageCount+" "+selectFields+" from (select top "+(allCount-(pageIndex-1)*perPageCount)+" "+selectFields+" from "+tableName+" "+((queryCondition!="")?"where "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"asc":"desc")+") order by "+orderKey+" "+((isDesc)?"desc":"asc")+"";
#endregion
}
else if(pageIndex>=totalIndex)
{
#region 最后页
sql="select "+selectFields+" from (select top "+(allCount-(totalIndex-1)*perPageCount)+" "+selectFields+" from "+tableName+" "+((queryCondition!="")?"where "+queryCondition+"":"")+" order by "+orderKey+" "+((isDesc)?"asc":"desc")+") order by "+orderKey+" "+((isDesc)?"desc":"asc")+"";
#endregion
}
return sql;
}
}
返回的sql语句将只选择当前页所需要的记录,程序中直接填充到DataSet中显示即可!
- 关于ACCESS快速分页的补充!
- DataGrid基于Access的快速分页法
- DataGrid基于Access的快速分页法
- DataGrid基于Access的快速分页法
- DataGrid基于Access的快速分页法
- DataGrid基于Access的快速分页法
- DataGrid基于Access的快速分页法
- DataGrid基于Access的快速分页法
- 关于discuz分页应用的补充
- 转载:关于ACCESS分页
- DataGrid连接Access的快速分页法(5)——实现快速分页
- DataGrid连接Access的快速分页法(5)——实现快速分页
- 关于使用查询分析器access数据库导入Sql server数据库的一点补充
- DataGrid连接Access的快速分页法(3)——SQL语句的选
- 关于_disable_logging的补充
- 关于接电话的补充
- 关于多线程的补充
- 关于编译的补充
- c#学习笔记(1)转载
- JUnit和单元测试入门简介
- AspNetForums2.0附件的修改
- AspNetForums2.0修改日志
- [转帖]C#的前途如何?
- 关于ACCESS快速分页的补充!
- 一直以来没有成功运行出.TEXT Blog,今天找到一篇文章,转过来看看吧
- 我的.Net童话 六
- 游戏的启示
- 如何获取rfc文档
- 书写NDIS过滤钩子驱动实现ip包过滤
- C#语法入门1
- .NET 平台下的OutLook 开发技术
- 另一个游戏的启示——富爸爸之现金流游戏