日期:2014-05-18  浏览次数:20595 次

求助rs分页的技巧问题
我现在正在做一个手机销售票据打印程序,到最后打印的时候遇到了数据记录如何分页打印的问题,问题是这样的。

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

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

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

  本人学习数据库知识尚浅,望能有高人指点指点,万分感谢!!!

------解决方案--------------------
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 

------解决方案--------------------
帮顶
------解决方案--------------------
等待牛人来答.