delphi 数据分页问题

stephenchern 2014-07-27 01:49:47
老问题了 不知道csdn现在还有大侠解决否
可能delphi老了吧。 还是用的人少了 近几年这里提的问题 都没人回复
也没找到完美答案
但是 说句实在的 写应用程序 还是delphi方便。

ok 切入正题 闲话好说 还望大家能给予帮忙解决

delphi要实现数据分页,
本人要求是 在数据表滚动的时候 实现隐式的分页
也就是说 假如数据有1w条
打开加载到界面,默认先加载100条,然后用户在滚动网格的时候,当滚动至下方时,系统再再加载下一页的100条
以此类推,往后面累加
当然 这里要用到数据库的存储过程来控制
存储过程倒是简单 已经设计好
问题是我们程序如何控制? delphi的数据集要做成可以陆续累加进去的
不知道怎么实现? 还请指教
...全文
572 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stephenchern 2014-09-12
  • 打赏
  • 举报
回复
这位兄弟说的有理 我就是用clientdataset了 但是后面刷新 还是得自己处理下 索性自己写了。。
luxuewei5214 2014-09-12
  • 打赏
  • 举报
回复
引用 5 楼 xiaoxian251 的回复:
ClientDataSet1.PacketRecords
yes,clientdataset有个属性,可以设置每次加载记录的数量,分批次加载,完全符合你的要求 另一种方法就是自己手动实现,使用stringgrid,每次滚到表格底部时,手动加载下一批数据到表格中
xiaoxian251 2014-09-12
  • 打赏
  • 举报
回复
ClientDataSet1.PacketRecords
stephenchern 2014-09-12
  • 打赏
  • 举报
回复
不行。 没能达到我要的效果。
lyhoo163 2014-07-28
  • 打赏
  • 举报
回复
使用DataSet数据集,批量读入DBGrid即可。
踏雪无痕 2014-07-27
  • 打赏
  • 举报
回复
unidac的组件uniquery有两个个属性就可以轻松实现。但是这样做,你必须要写一条语句查出总记录来赋值给label才知道总共有多少记录哦,而且不能完美使用cxgrid、dbgrideh自带的过滤功能(因为刚开始只能100条数据,你是不能过滤100以后的符合条件的记录的)

FetchRows可以设定一次获取记录的行数
uniquery 和 unitable 的 SpecificOptions 属性,需要设置 FetchAll=False才能使 FetchRows 的设置生效,而默认情况下, oracle 是设置Oracle.FetchAll=False;
而对去 sql server 和 mysql 等,却是设置的 XXX.FetchAll=True


stephenchern 2014-07-27
  • 打赏
  • 举报
回复
先感谢楼上 自己先解决了一部分问题 利用clientdataset来接收数据 实在郁闷 clientdataset一直以来没能完全用上 这次算是用上了 就是实现3层结构的中间利器 代码如下: ClientDataSet := TClientDataSet.Create(Self); DataSetProvider := TDataSetProvider.Create(Self); DataSetProvider.DataSet := ClientDataSet; CreateADODataSet(ADOQuery, ConnectionString, Self); try SqlStr := 'select * from T_Role'; ExecADOQuery(ADOQuery, SqlStr, True); DataSetProvider.DataSet := ADOQuery; ClientDataSet.AppendData(DataSetProvider.Data, True); finally ADOQuery.Free; end; ClientDataSet.FieldByName('RoleID').ReadOnly := False;//这里赋值过来默认ID列会为自读,要改过来下,这样新增情况下才可以往里面编辑 ClientDataSet.IndexFieldNames := 'RoleCode';//设置索引列,便于FindKey方法查找,编辑下查找是否重复编号用 DataSource := TDataSource.Create(Self); DataSource.DataSet := ClientDataSet; DataSource.OnDataChange := DataChange; // ClientDataSet.First; cxGridDBTableView.DataController.DataSource := DataSource;

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧