打印水晶报表

成绩填报模块里面可以查询学生成绩也是可以打印成绩报表的,在打印前我们需要先按照水晶报表,安装完成之后就在所在的区域里面建一个新的文件夹用了来放水晶报表文件,因为打印水晶报表,需要两个文件,设计数据源和设计水晶报表模板。在新建的文件夹右键添加新建项,首先建数据源文件,在已安装下面找到数据,在数据里面还有一个数据集命名(ReportDB)后点击添加,再建水晶报表模板,同样右键添加新建项,在已安装下找到Reporting,只有在已安装了水晶报表软件的情况下才能找到这一项,点击Reporting命名(AchievementReport)然后点击添加。
在这里插入图片描述
进入到设计数据源文件:添加数据源有两种方式,第一种是通过与数据库连接把需要的表连接进来,因为现在需要打印的这些数据是多表连接查询出来的,我们是建了实体类来存放的,所以这一张表在数据库里面是没有的。这时可以选择第二种,添加DataTable数据表(如下图),直接设计数据表里面的字段,接着要设计属性,这一步很重要,设计数据表属性里的数据类型跟数据库里的一致,数据类型不一致会导致数据无法导入。
在这里插入图片描述
水晶报表模板的设计:在添加完成之后,在弹出来的窗口选择 作为空白报表 这一项。下面就是一张空白报表,需要我们去画格式,显示的格式就是按照画出来的格式进行显示。当创建好空白报表后,在左侧的字段资源管理器下面的数据库字段点击右键,选择数据库专家找到设计好的表,选中它作为数据源引进来。添加完成后点击打开数据库字段就可以看到数据源的表以及它的字段。接下来就可以画表的格式了,在画表的过程中如果想看到画了之后的效果的时候就可以点击底部的主报表预览,这可以看到你画了之后在页面显示的模板。你想设计的任何格式点击右键就会显示出来提供你选择,像在设计表的文字的时候,可以在插入列中选择一个文本框在里面输入文字,再调整需要的字体样式。这里需要注意的是,页眉(表头)和详细资料(传进来的数据)是相互对应的,为了保证数据对应,我们要在数据库字段里选到数据表,然后移动鼠标到需要显示的字段,按下鼠标把字段拖动到详细资料这一栏标题的时候再放开鼠标,这样就可以使页眉和详细资料一一对应了。还有需要画一个框把这两栏包裹住,在分割这个框的时候要记得在详细资料栏的下面画,而不是在页眉的底部画,因为在详细资料里画的线,当数据有多行要显示的时候,这条线才能继续划分出更多的行来显示数据。画好的报表如下:
在这里插入图片描述
表格跟数据源都设计好了,接着就是对打印当前表格的数据进行处理,打印报表跟导出一样要先经过条件筛选使当前表格得到所需要的数据,传递三个参数AcademeID,GradeID,ClassID,这可作为条件筛选。打印报表的步骤基本是固定的,第一步:经过查询和筛选得出的数据在打印前还要对数据进行处理,在这里写了一个名为LINQToDataTable的方法将查询出来的打印数据转化为DataTable的格式,再实例化数据集。第二步:将数据放到数据集中。第三步:实例化创建的水晶数据报表。第四步:用Server.MapPath这个方法去获取报表的物理文件路径。第五步:将画好的报表加载到报表模板中。第六步:设计报表的数据源。第七步:最后将报表转化为文件流输出。
在这里插入图片描述
这个报表打印的是考试成绩,在查询数据的时候要对成绩进行处理,一个学生会有多个成绩,这里需要获取每个学生的最高成绩,所以linq使用group by对UserID用户ID进行排序。
查询成绩:
from tbAchievement in myModels.PW_Achievement
group tbAchievement by tbAchievement.UserID into tbStudent
从自定义的表名tbAchievement中,这个表数据来自myModels.PW_Achievement,下一步就是使用group by对成绩进行处理,tbAchievement表中的数据根据tbAchievement.UserID用户ID进行排序,into是命名为tbStudent,这里命名为tbStudent之后上面自定义的tbAchievement作用就会失效,在下面查询字段用的时候用到的就是tbStudent这个表名了。
查询列表:
因为在tbAchievement表中所有的成绩数据都是凌乱分布的,假设用户ID为1的用户,他拥有78,83,90这三个成绩,这时候成绩是顺序没有规律的分布,所以要对上面排分组好的成绩表查询出的成绩结果进行排序。orderby tbAchievement.Achievement descending
对tbAchievement.Achievement成绩表里面的成绩进行降序的排序,排序好的结果就会是从大到小:90,83,78这样的顺序符合我们的需求,在获取成绩的时候直接可以用到第一条成绩最高的数据。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值