《精选水晶报表技术概述》由会员分享,可在线阅读,更多相关《精选水晶报表技术概述(45页珍藏版)》请在金锄头文库上搜索。
1、-基于C#语言主讲教师:钱 哨本课学时:72课时联系方式:Windows程序设计第七章、水晶报表技术n本章主要内容介绍5.1 windows和窗体5.2 Visual Stutio .net IDE简介5.3 事件处理CONTENT本章学习目标:本章学习目标:理解水晶报表的作用和优点使用水晶报表专家创建水晶报表在窗体中使用水晶报表和报表绑定简介 7-1产品部的薪金详细信息财务部的薪金详细信息市场部的薪金详细信息按顺序显示信息汇总信息?报表格式化且有条理的数据记录表示方式水晶报表简介 7-2姓名: Allen John职位:分析员部门:20薪金:10000姓 名 : Jack Turner职位:
2、 行政人员部门: 10薪金: 3200姓名: Mark Lee职位: 经理部门: 30薪金: 12000姓名: Chan Cho职位: 销售员部门: 40薪金: 7600姓名: David Blake职位: 销售员部门: 40薪金: 6500姓 名 : Susan Jones职位: 行政人员部门: 10薪金: 4500姓 名 : Scott William职位: 销售员部门: 40薪金: 8500姓名: Adam Johns职位: 分析员部门: 20薪金: 9500用表格形式显示的数据需要手动计算每个部门的总薪金水晶报表简介 7-3姓名姓名姓名姓名职职职职位位位位部部部部门门门门薪金薪金薪金薪
3、金Jack Turner行政人员103200Susan Jones行政人员104500部部门门 10 的的总总薪金是薪金是 7700Allen John分析员2010000Adam Johns分析员209500部门 20 的总薪金是 19500 Mark Lee经理3012000部部门门 30 的的总总薪金是薪金是 12000 Chan Cho销售员407600David Blake销售员406500Scott William销售员408500部部门门 40 的的总总薪金是薪金是 22700 有条理的表示数据记录更容易汇总所需的信息水晶报表简介 7-4水晶报表是 Visual Studio 环
4、境(包括 Visual Studio.NET)中用于创建报表的标准工具利用水晶报表可以创建交互式的优质报表不仅能为 WinForms 和 WebForms 创建报表,还能将报表作为Web 服务存放在 Web 服务器上“水晶报表设计器”界面用于创建并格式化报表,大大减少代码编写量水晶报表的功能运行时自定义报表查看器与其他控件之间的交互报表作为Web服务借助交互式界面更加容易地创建报表水晶报表水晶报表Windows窗体中水晶报表的使用 7-5u 新建Windows项目u 添加CrystalReportViewer 控件u 添加“选择报表”按钮u 添加按钮响应事件private void btnSe
5、lect_Click(object sender, System.EventArgs e) OpenFileDialog dlg = new OpenFileDialog(); dlg.Title = 打开水晶报表文件; dlg.Filter = 水晶报表文件(*.rpt)|*.rpt|所有文件|*.*; if(dlg.ShowDialog()=DialogResult.OK) crystalReportViewer1.ReportSource = dlg.FileName; Windows窗体中水晶报表的使用 7-6水晶报表的操作分为两部分显示报表文件设计报表文件建立水晶报表文件 7-71、
6、 执行模式执行模式水晶报表取数据可以使用下面的方法实现: Pull 模式: 被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据,当然这种方式不需要编写任何代码不需要编写任何代码。 Push 模式: 此时开发者不得不自己编写代码连接数据并组装不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。建立水晶报表文件 7-72、报表类型、报表类型(1)Strongly-typed 报表: 当你将报表文件加入到项目中去时,它就变成了一个了“ strongly-typed“报表。在这些情况下,你将拥有直
7、接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。(2)Un-Typed 报表: 这里的报表并不直接包含在项目中,因此称为un-typed 报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地调用报表。建立水晶报表文件 7-73、Pull模式的使用模式的使用(1)首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。(2)拖放一个CrystalReportViewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt文件。建立水晶报表文件 7-73、Pull模式的使用模式的使用(1)在右击“解决方案游览器”,
8、在弹出的菜单中选择“添加”“添加新项”“Crystal Report”(2)在“Crystal Report 库”中选择“作为空白报表”单选按钮,最后单击“确定”。建立水晶报表文件 7-73、Pull模式的使用模式的使用(3)出现水晶报表设计器。(4)右击报表中的“详细资料区”,选择“数据库”“数据库专家.“。在弹出的“数据库专家”中,扩展“OLE DB(ADO)”选项,此时会弹出另外一个“OLE DB(ADO)”窗口。建立水晶报表文件 7-73、Pull模式的使用模式的使用(5)在OLE DB (ADO) 弹出窗口中,选择MicrosoftOLE DB Provider for SQL Se
9、rver 然后Next(6)指定连接的信息(选择Pubs库),单击“下一步”,最后单击“完成”按钮。建立水晶报表文件 7-73、Pull模式的使用模式的使用(7)这时你就能在“数据库专家”窗口中看到我们选择的数据库。 扩展“Pubs”数据库,扩展“表”,选择“employee”表并将其加到“选定的表”区中,单击“确定”按钮。(8)现在在“字段资源浏览器”中就会在左边“数据库字段”区中显示你选择的表,以及表中的字段。建立水晶报表文件 7-73、Pull模式的使用模式的使用(9)拖放需要的字段进入报表的“详细资料”区。字段名将会自动出现在”页眉“区。如果你想修改头部文字,则可以右击“页眉”区中的文
10、字,选择”编辑文本对象“选项并进行编辑。保存并浏览信息。建立水晶报表文件 7-73、Pull模式的使用模式的使用(10)回到前面的WebForm中,拖放一个CrystalReport Viewer控件到页面中去。(11)调出Crystal Report Viewer控件的属性窗口,选择“ReportSource”区点击下拉列表。此时你能够从Crystal Report Viewer 控件中看到使用一些虚拟数据组成的报表文件的预览。建立水晶报表文件 7-74、使用使用Push模式模式1. 设计一个DataSet2. 创建一个.rpt文件同时将其指定给上一步建立的DataSet。3. 在aspx页
11、面中拖放一个CrystalReportViewer 控件同时将其与前面的rpt文件建立联系。4. 在代码中访问数据库并把数据存入DataSet5. 调用DataBind方法。基本步骤基本步骤建立水晶报表文件 7-74、使用使用Push模式模式第一步:设计一个第一步:设计一个DataSet(1) 右击“解决方案浏览器”,选择“添加”-“添加新项”-“数据集”(2)从“服务器资源管理器”中的“SQL Server”中拖放“Stores”表(位于PUBS数据库中)。(3)此时在数据集中就会有一个Stores表的结构图。建立水晶报表文件 7-74、使用使用Push模式模式第一步:设计一个第一步:设计一
12、个DataSet建立水晶报表文件 7-74、使用使用Push模式模式第二步:创建一个第二步:创建一个.rpt文件同时将其指定给上一步建立的文件同时将其指定给上一步建立的DataSet4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。5)建立.rpt文件之后,右击“详细资料”-“添加删除数据库”6) 在“数据库专家”窗口中,展开“项目数据”(代替以前的OleDb),展开“ADO.Net数据集”-“DataSet1”,选择“Stores”表。7) 将“Stores”表添加到“选定的表”中,点击“确定”建立水晶报表文件 7-74、使用使用Push模式模式第二步
13、:创建一个第二步:创建一个.rpt文件同时将其指定给上一步建立的文件同时将其指定给上一步建立的DataSet建立水晶报表文件 7-74、使用使用Push模式模式第三步:在第三步:在aspx页面中拖放一个页面中拖放一个CrystalReportViewer 控件同时将其与前面的控件同时将其与前面的rpt文件建立联系。文件建立联系。建立水晶报表文件 7-74、使用使用Push模式模式第四步:第四步:建立一个建立一个Crystal Report Viewer 控件,并控件,并设定其属性,此处与设定其属性,此处与PULL模式下是一致的。同时注意将生成的模式下是一致的。同时注意将生成的dataset对象
14、对象拖拽到窗体界面中。拖拽到窗体界面中。建立水晶报表文件 7-74、使用使用Push模式模式第五步:运行后我们将看见一张空的报表,主要原因是第五步:运行后我们将看见一张空的报表,主要原因是DataSet对象对象所复制的仅仅是空的物理表的模式结构,而实质的数据必须通过编程所复制的仅仅是空的物理表的模式结构,而实质的数据必须通过编程的方式才可以实现的方式才可以实现。在代码中访问数据库并把数据存入在代码中访问数据库并把数据存入DataSet,代码见下:,代码见下:7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例某高校为合作办学院校,现有三所合作院校,且成绩单
15、据的格式某高校为合作办学院校,现有三所合作院校,且成绩单据的格式完全不一致,纸质报表样式如下:【详见学生成绩单据报表图片】完全不一致,纸质报表样式如下:【详见学生成绩单据报表图片】7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例数据库分析【数据库分析报告见电子文档】数据库分析【数据库分析报告见电子文档】7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第一步:建立一个空的rpt文件,首先进行整个报表的纸张大小设置,这一点对于后期打印报表和报表布局非常重要第二步:将纸张大小设置成为B5纸,纵向7-8 水晶报表文件设
16、计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第三步:再选择页面设置,配置页面的上下左右的边距。具体的边距要求参照WORD文档对于页面的设置参数。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第四步:从报表的工具箱中选择文本对象,拖到报表页眉处,键入“网络管理”字样后,点击右键选择设置对象格式,建立如下图的报表页眉样式。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第五步:设计页眉部分。由于报表左侧线段无法通过工具箱的控件实现,故通过绘图软件实现这部分内容。通过右键点击页眉处,选择图片
17、,将制作好的图片插入左侧页眉处。而后,以该图片的高设定为页眉高。从工具箱之中拖拽框对象,此处需要注意的是,绘制边框时候,页眉和详细资料西部一起框住,这样产生的报表样式可以统一美观。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第六步:选择工具箱之中的线条对象,在页眉处绘制出四个单元格,准备添加相关的文字信息。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第七步:用右键点击报表界面,在弹出的菜单中选择数据库-数据库专家,在弹出的OLE DB(ADO)界面中选择OLE DB Provider SQL Serve
18、r,并配置数据库服务器连接信息。选择完成后,打开菜单中的水晶报表项里面的字段资源管理器,贮备将展开的数据库字段拖拽到报表界面上面。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第八步:将页眉处文字按照下图写入,并配置字体大小,同时用线条对象勾勒出表格的基本数据分布区域。拖拽过来的属性字段删除页眉部分后,将实际字段分别排列在详细资料的空格内。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第九步:配置报表页脚部分,从工具箱中拖拽文本,线条和框对象共同组成下图页脚的样式。7-8 水晶报表文件设计案例案例案例1:打
19、印某高校学生成绩单案例:打印某高校学生成绩单案例第十步:右键点击报表页面,选择报表-节专家,在打开的节专家设计器里面,勾选在页面底部打印功能。此功能可以使得报表页脚仅仅在最后一页的底部显示。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第十一步:整体设计完成后的报表如下图所示,点击主报表预览,可以预览报表基本样子。7-8 水晶报表文件设计案例案例案例1:打印某高校学生成绩单案例:打印某高校学生成绩单案例第十二步:回到form1界面,从水晶报表中拖出一个crystalReportViewer对象,并配置该crystalReportViewer对象的re
20、portsource属性为刚才设计的rpt文件。运行form1,程序一切正常,主要问题是:u报表头非动态变化的数据;u显示的学生成绩内容并非一个班的,而是所有的学生成绩。u每门课程的百分比非动态变化的,毕竟每个教师给出的百分比都不尽相同。u报表页脚的信息是静态不变的。很显然,离真实的动态报表还是相距甚远。7-8 水晶报表文件设计案例案例案例2:水晶报表定制案例:水晶报表定制案例第一步:将第四章ADO.NET中案例中的类库businesslayer.cs和databaselayer.cs,以及案例14窗体文件form14.cs, form14.designer.cs, form14.resx复制
21、到水晶报表项目中,指定窗体文件form14.cs 为首页运行。7-8 水晶报表文件设计案例案例案例2:水晶报表定制案例:水晶报表定制案例第二步:运行窗体文件form14.cs ,调整并运行后状态如下图所示。期望当点击打印按钮时候,可以将某班级某课程的水晶报表通过刚才建立的案例1显示出来,即打开当前项目的form1窗体。7-9 水晶报表文件设计案例案例案例2:水晶报表定制案例:水晶报表定制案例第二步:运行窗体文件form14.cs ,调整并运行后状态如下图所示。期望当点击打印按钮时候,可以将某班级某课程的水晶报表通过刚才建立的案例1显示出来,即打开当前项目的form1窗体。总结水晶报表是用于创建
22、报表的标准工具水晶报表的优点包括:运行时自定义报表查看器与其他控件之间的交互报表作为 Web 服务开发 Windows 应用程序时,可以使用CrystalReportViewer控件将报表绑定到 WinForms窗体上ADO.NET 数据集设计器用于创建只包含数据结构而不包含实际数据的数据集对象水晶报表中的选择公式可用于计算字段和汇总,确定如何显示报表的输出结果9、静夜四无邻,荒居旧业贫。2024/9/222024/9/22Sunday, September 22, 202410、雨中黄叶树,灯下白头人。2024/9/222024/9/222024/9/229/22/2024 10:37:24
23、 AM11、以我独沈久,愧君相见频。2024/9/222024/9/222024/9/22Sep-2422-Sep-2412、故人江海别,几度隔山川。2024/9/222024/9/222024/9/22Sunday, September 22, 202413、乍见翻疑梦,相悲各问年。2024/9/222024/9/222024/9/222024/9/229/22/202414、他乡生白发,旧国见青山。22 九月 20242024/9/222024/9/222024/9/2215、比不了得就不比,得不到的就不要。九月 242024/9/222024/9/222024/9/229/22/2024
24、16、行动出成果,工作出财富。2024/9/222024/9/2222 September 202417、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。2024/9/222024/9/222024/9/222024/9/229、没有失败,只有暂时停止成功!。2024/9/222024/9/22Sunday, September 22, 202410、很多事情努力了未必有结果,但是不努力却什么改变也没有。2024/9/222024/9/222024/9/229/22/2024 10:37:24 AM11、成功就是日复一日那一点点小小努力的积累。2024/9/222024/9/
25、222024/9/22Sep-2422-Sep-2412、世间成事,不求其绝对圆满,留一份不足,可得无限完美。2024/9/222024/9/222024/9/22Sunday, September 22, 202413、不知香积寺,数里入云峰。2024/9/222024/9/222024/9/222024/9/229/22/202414、意志坚强的人能把世界放在手中像泥块一样任意揉捏。22 九月 20242024/9/222024/9/222024/9/2215、楚塞三湘接,荆门九派通。九月 242024/9/222024/9/222024/9/229/22/202416、少年十五二十时,步
26、行夺得胡马骑。2024/9/222024/9/2222 September 202417、空山新雨后,天气晚来秋。2024/9/222024/9/222024/9/222024/9/229、杨柳散和风,青山澹吾虑。2024/9/222024/9/22Sunday, September 22, 202410、阅读一切好书如同和过去最杰出的人谈话。2024/9/222024/9/222024/9/229/22/2024 10:37:24 AM11、越是没有本领的就越加自命不凡。2024/9/222024/9/222024/9/22Sep-2422-Sep-2412、越是无能的人,越喜欢挑剔别人的错
27、儿。2024/9/222024/9/222024/9/22Sunday, September 22, 202413、知人者智,自知者明。胜人者有力,自胜者强。2024/9/222024/9/222024/9/222024/9/229/22/202414、意志坚强的人能把世界放在手中像泥块一样任意揉捏。22 九月 20242024/9/222024/9/222024/9/2215、最具挑战性的挑战莫过于提升自我。九月 242024/9/222024/9/222024/9/229/22/202416、业余生活要有意义,不要越轨。2024/9/222024/9/2222 September 202417、一个人即使已登上顶峰,也仍要自强不息。2024/9/222024/9/222024/9/222024/9/22MOMODA POWERPOINTLorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id urna blandit, eleifend nulla ac, fringilla purus. Nulla iaculis tempor felis ut cursus. 感感 谢谢 您您 的的 下下 载载 观观 看看专家告诉