Powerbuilder中DataWindow百万级数据量分页显示问题

wangkenping 2004-11-22 02:57:45
Powerbuilder中DataWindow百万级数据量分页显示问题

大家好
我正在做一个项目,关于电信的话单处理
我想实现在DataWindow中分页显示,能 [上一页],[下一页]的翻转记录。
数据库服务器是远程的,请问应该如何实现呢?

我用的是PB 9.0 + sql server2000


我在网上找到一个分页的存储过程,但怎么样用数据窗口把存储过程记录集显示出来?


/*--利用SQL未公开的存储过程实现分页

方法简单且效率高,已知的问题就是要多返回一个空的记录集

解决的方法是在前台调用时,用 set recordset=recordset.nextrecordset
的方法跳过第一个记录集

此方法由J9988提供,我只是将它改成了方便调用的存储过程

--邹建 2004.05(引用请保留此信息)--*/

/*--调用示例

exec p_splitpage 'select id,name from syso b j e c ts where xtype=''U'' order by id',1,5
--*/
create procedure p_splitpage
@sql nvarchar(4000), --要执行的sql语句
@currentpage int=2, --要显示的页码
@pagesize int=10, --每页的大小
@pagecount int=0 out --总页数
as
set nocount on
declare @p1 int

exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output

select @pagecount=ceiling(1.0*@pagecount/@pagesize)
,@currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
go


...全文
481 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2004-11-28
  • 打赏
  • 举报
回复
给我你的QQ,和你聊聊
wangkenping 2004-11-28
  • 打赏
  • 举报
回复
高手帮帮助
wangkenping 2004-11-28
  • 打赏
  • 举报
回复
QQ:59771393
wangkenping 2004-11-27
  • 打赏
  • 举报
回复
to : lzp_lrp(lzp)
我存储过程中的SQL是变动的。那显示的列也是变的怎么显示.
你有QQ或MSN吗?
WorldMobile 2004-11-27
  • 打赏
  • 举报
回复
以存储过程做数据源即可
wangkenping 2004-11-27
  • 打赏
  • 举报
回复
to : lzp_lrp(lzp) :怎么样用数据窗口把存储过程记录集显示出来?
31737951 2004-11-25
  • 打赏
  • 举报
回复
这个存储过程是个很好的方法啊,比pb的rows->retrieve->Rows as Needed好很多哦,建议在拉动滚动条的时候触发检索事件
WorldMobile 2004-11-25
  • 打赏
  • 举报
回复
pb的rows->retrieve->Rows as Needed不好用,呵呵,我测试过的,你们可以试试

一开始是检索了一屏数据,但如果你一翻页,就会把所有数据检索出来
wangkenping 2004-11-24
  • 打赏
  • 举报
回复
还有什么好方法吗?
WorldMobile 2004-11-22
  • 打赏
  • 举报
回复
你必须有一个有序的主键,然后根据这个主键值去构造SQL语句打比分你的主键为ID
数据为
ID … …
1
2
3
4
5
6

每页显示两行数据,
你的SQL语句这么写
select id from table where id >= :ll_1 and id <= :ll_2

根据点击的按钮去判断,第一次 让ll_1 = 1, ll_2 = 2去检索数据
点击下一页 ll_1 = ll_1 + 2, ll_2 = ll_2 + 2 去检索数据
上一页 ll_1 = ll_1 - 2, ll_2 = ll_2 - 2 去检索数据
ll_1, ll_2 为实例变量
mittee 2004-11-22
  • 打赏
  • 举报
回复
请参考一下下面的文章;
http://blog.csdn.net/xinyulou/archive/2004/07/19/45006.aspx
wangkenping 2004-11-22
  • 打赏
  • 举报
回复
to :lzp_lrp(lzp)
我用的是sql server 2000数据库
请问用数据窗口怎么样做才能使每次只从数据库中取当前页的数据
WorldMobile 2004-11-22
  • 打赏
  • 举报
回复
问一下,你用的是什么数据库?数据库不一样,SQL语句不一样

根据你的主键你选择数据,每次只检索出当前页数据
WorldMobile 2004-11-22
  • 打赏
  • 举报
回复
用存储过程作为数据源,显示数据应该没问题,但要翻页,就不好做了,建议你用数据窗口来做

楼上的可以没明白什么意思,肯定应该是每次只显示当页的数据,即每次只从数据库中取当前页

的数据,如果百分条数据全检索到前台,那肯定就死掉了
li_d_s 2004-11-22
  • 打赏
  • 举报
回复
打开datawindow,菜单rows->retrieve->Rows as Needed
Pegasuscc 2004-11-22
  • 打赏
  • 举报
回复
怎么这样的简单问题,做得这么复杂呢,在DATAWINDOWS的画笔里,选择rows->retrieve option->rows as needed不就是分页了吗,和SQLSERVER的一样
songzj8 2004-11-22
  • 打赏
  • 举报
回复
pb提供分页显示的功能的,不用那么麻烦

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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