问题描述如下: 我在客户端通过CLIENTDATASET来访问服务器端数据库 现在想在DBGRID里显示 实现分页显示的功能 请问该如何实现呢 数据库是ORACLE
解决方案 »
- 做一个拖动效果,mousemove好像不行啊
- 谁可以给出waveInOpen及其相关API函数的Delphi范例,感激不尽
- 这个语句对吗?
- 我在网上找了好久,终于找到了... 解决 TShellTreeView 老读软驱的问题
- 我用VB7做了一个DLL文件,在DEPHI中是否可以引用,如果可以,如何引用.
- 怎样才能让TRichViewEdit在Paste的时候过滤内容?
- sql 查询的问题
- 急急急!!!!!如何在TRichEdit中实现超级链接???
- 各为老兄:请问oracle里面有没有货币类型--------我是orcale初学者,请帮忙
- 怎样才知道准备打开的文件是否已经被其他程序打开了?怎样读取一个只读文件的内容呢?
- 分页问题
- 请问这样获取系统时间,为什么不对啊?????
给每条数据设个ID值(int),然后排序,根据每页的个数(PageSize)及页号计算出FirstID号(pageSize*页号),然后取记录
'Select Top ' + IntToStr(PageSize) + ' ID,Name,Age From uu987 Where ID<'+IntToStr(FirstID)+' Order By ID Desc';
就是这么个思路
只能在sql和access里用
oracle好像要用rownum
http://www.anylib.com
adoq.sql.add('select top '+inttostr(per_page_count)+' * from table1 where id not in (select top '+inttostr(PrevPageVariant)+' id from table1)')
PrevPageVariant:=0
adoq.open;下一页
adoq.sql.add('select top '+inttostr(per_page_count)+' * from table1 where id not in (select top '+inttostr(PrevPageVariant)+' id from table1)')
inc(PrevPageVariant,1);
adoq.open;上一页
adoq.sql.add('select top '+inttostr(per_page_count)+' * from table1 where id not in (select top '+inttostr(PrevPageVariant)+' id from table1)')
dec(PrevPageVariant,1);
adoq.open;末页
adoq.sql.add('select count(*) as 总数 from table1);
adoq.open;
PrevPageVariant:=trunc(adoq.fieldbyname('总数').asinteger/per_page_count);
adoq.sql.add('select top '+inttostr(per_page_count)+' * from table1 where id not in (select top '+inttostr(PrevPageVariant)+' id from table1)')
adoq.open;
他是这样显示的前20(我设置显示一次20条)
前40
前60
…………
ADOQuery1 执行查询 connection 为 ADOConnection1
DataSetProvider1得到adoquery1查询的数据 dataset为adoquery1
ClientDataSet1 PacketRecords设为20 providername为DataSetProvider1 右键,fields editor 中添加,选择你要的数据项
DataSource1 dataset为ClientDataSet1
DBGrid1 DataSource为DataSource1
把active设为true就可以了
select * from partdata where rowno between 10 and 20 当然还有别的方法,但我目前测试这种方法的速度最快。