当前位置: 代码迷 >> .NET报表 >> 报表如何能做出电影票(一格一格)的效果
  详细解决方案

报表如何能做出电影票(一格一格)的效果

热度:489   发布时间:2016-05-05 01:50:11.0
报表怎么能做出电影票(一格一格)的效果
最好是用ActiveReport(用水晶报表也行)
做出一个A4纸一共八大格(横二竖四),每个格里有几个小项目,
也就是说这几个小项目就是数据库里检索出来的一条记录
当然记录的条数不定,如果是一条就只在八格的第一个显示
如果是9条,就第一篇显示满之后第二页再显示一格

这个格要用什么控件画呢

谢谢了

------解决方案--------------------
不精确地说,这就是一个表格。

无非就是同一条记录可以被写在一行上。这个用一个循环就可以做。

数据 空列 数据
空行 空行 空行
数据 空列 数据
空行 空行 空行
数据 空列 数据
...
空行控列设置好尺寸,以及没有单元格边线,就作为每个框的留白。

------解决方案--------------------
看报表支持不支持了,我用fastreport在databand的columns下设置一下重复的count 或者宽度就可以横向排了

如果报表本身不支持横排,那你就的在sql语句里面玩花样了,比如你的东西就可以每8行做一个行列转换

比如我这里有个现有的sql

 --房间状态,行列转换,根据floorid 4行并一行
SELECT floorid,FloorName,
max(CASE cindex WHEN 0 THEN name ELSE '' end) AS name1,
max(CASE cindex WHEN 0 THEN status ELSE '' end) AS status1,
max(CASE cindex WHEN 1 THEN name ELSE '' end) AS name2,
max(CASE cindex WHEN 1 THEN status ELSE '' end) AS status2,
max(CASE cindex WHEN 2 THEN name ELSE '' end) AS name3,
max(CASE cindex WHEN 2 THEN status ELSE '' end) AS status3,
max(CASE cindex WHEN 3 THEN name ELSE '' end) AS name4,
max(CASE cindex WHEN 3 THEN status ELSE '' end) AS status4
 from
(SELECT roomid,
       Name,
       RoomTypeName,
       FloorId,
       FloorName,
       rindex = (
           (
               ROW_NUMBER() OVER (partition BY floorid ORDER BY floorid)-1
           )/4
       ),
       cindex = (
           (
               ROW_NUMBER() OVER (partition BY floorid ORDER BY floorid)-1
           )%4
       ),
       AreaId,
       AreaName,
       Status,
       SCode
FROM   TblRoomList) AS t
GROUP BY FloorId,FloorName,rindex


我这里是4行并一行,你看明白了直接改吧
  相关解决方案