最好是用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行并一行,你看明白了直接改吧