300分急求(150分)

  • 主题发起人 主题发起人 9898
  • 开始时间 开始时间
9

9898

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在在做一个关于宿舍管理的软件,但在报表打印作不出来,请求各位帮一下小弟的忙。
现在有数据库dd,字段bj,ss1,ss2,ss3,ss4,ss5,ss6,ss7,ss8,ss9,ss10,cj1(宿舍卫生成绩),cj2,cj3,cj4,cj5,cj6,cj7,cj8,cj9,cj10
要求根据班级,判断ss1(宿舍)..ss10是否有宿舍进行打印,且一行只能打印3个宿舍,请问怎样处理?
-------------------------------
班级1|ss1|cj1|ss2|cj2 |ss3|cj3
|ss4|cj4
-------------------------------
班级2|ss1|cj1|ss2|cj2
-------------------------------
像这样,有班级1,班级2,班级1有四个宿舍,班级2有2个宿舍,打印如上所是报表 怎没人回答,在下再加150分,.在下急求,多谢大家拉!
 
什么叫“是否有宿舍进行打印”?
我现在只假定你把某个班级所有的宿舍全打出来,给你一个相对偷懒一点的办法——
在设计期,把DetailBand做成这样:
-------------------------------
bj |ss1|cj1|ss2|cj2 |ss3|cj3
|ss4|cj4|ss5|cj5 |ss6|cj6
|ss7|cj7|ss8|cj8 |ss9|cj9
|ss10|cj10|
-------------------------------
也就是说所有的控件都是创建好并且数据也关联好的,现在你要做的就是在DetaiBand的
OnPrint事件里得到该班的实际宿舍号(我假定是连续编号的),如ss1到ss4,那你就把
ss5-ss10和cj5-cj10,还有相应的边框(QRShape)这些控件的Enabled和Visible属性都
设成False,其它控件的为True。同时调整DetailBand的高度和下面那条线的纵座标就OK了。
当然你要把所有控件的名字记下来,最好是带下标有规律的,这样用一个for循环即可搞定。
——未经验证,仅供参考。
 
我觉得你的表结构有问题
1。每个班级最多只有10个宿舍吗?
2。你怎么记录历次的宿舍卫生成绩?
3。你怎么确定每个班级有哪几个宿舍?
我的建议:
班级表
Classes(char(10) 班级编号 PK,
char(20) 班级名称,
char(20) 负责人,
char(60) 备注)

宿舍表
dormitories(char(10) 宿舍编号 PK,
char(10) 班级编号,
char(20) 卫生负责人,
char(60) 备注 )
卫生检查分数表
scores(datetime 检查时间 PK,
char(10) 宿舍编号 PK,
int 分数,
char(60) 备注)
要查询某个班级的宿舍某次检查的分数情况
select classes.班级编号,scores.宿舍编号,scores分数
from Scores left join Classes on Scores.宿舍编号=Classes.宿舍编号
where scores.检查时间=‘2001-10-11’ and Classes.班级编号=‘0913’

然后你根据得到的结果集,生成你任何格式的报表。

^^^^^^^^^仅仅是一点建议,细节问题再讨论。
 
多谢,在下的问题解决了
 
后退
顶部