求助rs分页的技巧问题

Walkline 2008-04-21 06:07:43
我现在正在做一个手机销售票据打印程序,到最后打印的时候遇到了数据记录如何分页打印的问题,问题是这样的。

因为是模仿别人程序票据的格式,以及所选纸张大小的缘故,打印的时候有几个限制:1、每页最多可以打印30个串号;2、每页最多可以打印4个不同品牌、型号、颜色的机器。

如果同品牌、型号、颜色的手机有多台可以直接在数量栏里体现并输出相应的串号,但最多是30台,如果多于30则分到第二页打印,也可以把最多4个不同品型颜的机器拼凑30台在同页打印。

我的难题是,如果按串号个数(30个)来分页好办,如果按行数(4行)来分也好分,但是现在要综合这两个条件,而且这两个条件还要考虑到品型颜的因素,实在是为难!我想过如果把品型颜分别统计个数,然后按最小的来分页,可是还有可能出现同型号但不同品牌的情况。

本人学习数据库知识尚浅,望能有高人指点指点,万分感谢!!!
...全文
129 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Walkline 2008-06-30
  • 打赏
  • 举报
回复
问题已解决,方法我自己也没弄明白,反正是自己解决了,呵呵,散分
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
等待牛人来答.
Walkline 2008-04-23
  • 打赏
  • 举报
回复
自己继续顶自己!!!!
Walkline 2008-04-22
  • 打赏
  • 举报
回复
就是很乱的条件,但其实就是一张出库单,有最多4行可以写不同的机器,下边有一片空白区域可以打印串号,最多30个,哎~~~~说不清楚了
flairsky 2008-04-22
  • 打赏
  • 举报
回复
看着不是很明白,欧语文没学好,别介意

能给个事例吗?
Walkline 2008-04-22
  • 打赏
  • 举报
回复
自己也顶
zhu_gx 2008-04-21
  • 打赏
  • 举报
回复
帮顶
Walkline 2008-04-21
  • 打赏
  • 举报
回复
我本来也是打算用程序来处理数据的,只是没想好方法,不过现在暂时想了一个方法,就是……先分别在提取出来的数据中查找同品型颜的数据,然后判断是否满足4和30的条件,并删除已经提取的数据,如果不满足就继续查找下一个品型颜的所有机器,再判断条件……ms很麻烦的方法
-狙击手- 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Walkline 的回复:]
引用 5 楼 happyflystone 的回复:
引用 4 楼 Walkline 的回复:
不好意思啊,我不是专门写sql程序的,我用的是vb6,你写的代码能看懂但意思不明....


只能满足一每页多少条记录的功能


因为你要一页码固定品种数


如果固定每页多少条记录,那碰到超过4种不同机型或品牌怎么办?超了啊
[/Quote]

所以简单的分页没办法处理
比如一页满足30时,当品种超4个也不符合吧

所以你在VB中提取所有的数据,然后用程序处理比较好
Walkline 2008-04-21
  • 打赏
  • 举报
回复
我用的是VB6+MDB,虽然简陋了些,不过方法大同小异,而且我不会需要变态级别的数据量,呵呵
Walkline 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 happyflystone 的回复:]
引用 4 楼 Walkline 的回复:
不好意思啊,我不是专门写sql程序的,我用的是vb6,你写的代码能看懂但意思不明....


只能满足一每页多少条记录的功能


因为你要一页码固定品种数
[/Quote]

如果固定每页多少条记录,那碰到超过4种不同机型或品牌怎么办?超了啊
-狙击手- 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Walkline 的回复:]
不好意思啊,我不是专门写sql程序的,我用的是vb6,你写的代码能看懂但意思不明....
[/Quote]

只能满足一每页多少条记录的功能


因为你要一页码固定品种数
Walkline 2008-04-21
  • 打赏
  • 举报
回复
不好意思啊,我不是专门写sql程序的,我用的是vb6,你写的代码能看懂但意思不明....
-狙击手- 2008-04-21
  • 打赏
  • 举报
回复
只能应用程序处理,或后台用游标来处理了
-狙击手- 2008-04-21
  • 打赏
  • 举报
回复
晕,条件是复杂多了

再想想
-狙击手- 2008-04-21
  • 打赏
  • 举报
回复
1------------------------------------------------
--游标不是明智的选择,在小数据量时可以使用
create procedure hahaha
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

测试: hahaha '任何条件的SQL语句',2,10

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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