
水晶报表设计与产品发布讲义.ppt
29页C#程序设计,,第九章,水晶报表设计与产品发布,本章任务,能使用水晶报表设计器设计报表 能在报表中设置数据筛选、排序与分组 能通过创建安装项目的方法进行应用程序打包,任务9.1 “学生信息管理系统”项目 ——学生成绩报表设计,在前面介绍的任务8.3框架的基础上,添加一个窗体到“学生信息管理系统”项目的表示层项目中,用于显示成绩查询报表在查询条件中输入相应的条件后单击“生成报表”按钮,在窗体右侧的报表显示控件中将会显示符合条件的学生成绩信息,任务9.1 “学生信息管理系统”项目 ——学生成绩报表设计,在本任务中我们使用了CrystalReportViewer控件来显示报表,使用报表设计器设计了报表的格式,并完成了基于三层架构为报表提供动态的数据源代码的编写水晶报表设计器不仅提供了设计报表格式的工具,同时它还能实现报表数据的排序、筛选和分组显示等功能,在数据库中添加表和视图,,创建报表显示窗体,在“学生信息管理系统”的表示层项目中,添加一个窗体StuResultsReport作为报表显示窗体,窗体上的控件类型及布局如图所示,设计报表文档,在表示层项目中添加新建项,项目类型选择“Reporting”,模板选择“Crystal报表”,命名为“StuResultsReport”,如图所示,完成后的报表格式如右图所示,完成后的报表格式如图所示,添加数据访问层代码,在数据访问层项目添加一个StuResaultDB.cs类,在该类中设计一个GetStuResaults()方法,用于实现返回一个DataTable数据集,StuResaultDB.cs类代码如下,public class StuResaultDB { public DataTable GetStuResaults(string sql) { return DBHelper.GetDataSet(sql).Tables[0]; } },添加业务逻辑层代码,public class StuResaultService { StuResaultDB srdb = new StuResaultDB();//实例化一个数据访问层类对象 public DataTable GetStuResaultBysql(string sql) { return srdb.GetStuResaults(sql); } },在业务逻辑层项目中添加一个StuResaultService.cs类,设计一个GetStuResaultBysql()方法,用于为数据访问层提供服务,代码如下:,运行调试,代码编写完成后按F5进行调试,不输入任何查询条件,按“生成成绩报表”按钮,报表运行结果如图所示,CrystalReportViewer控件属性,Crystal报表设计器,报表数据排序,记录排序专家,记录排序结果,报表数据分组,2、分组结果,1、组专家对话框,报表数据筛选,1、选择专家对话框,2、数据筛选结果,在报表中插入图表,1、图表专家对话框,2、运行结果,任务9.2 “学生信息管理系统”项目 ——应用程序打包发布,将“学生信息管理系统”项目打包发布到其他计算机上,要求: (1)能在桌面和程序菜单中为应用程序创建快捷方式并指定快捷方式的图标; (2)能创建与应用程序安装对应的卸载程序; (3)能安装系统数据库。
创建安装部署项目,添加项目输出,生成安装文件,添加程序卸载类,class Program { static void Main(string[] args) { string sysroot = System.Environment.SystemDirectory; string productcode = “{95394279-B44B-4C36-8D5C-7AF496FF7EA0}“; System.Diagnostics.Process.Start(sysroot + “\\msiexec.exe“, “/x “+productcode+“ /qr“); } },Program.cs关键代码:,添加快捷方式及运行结果,添加数据安装程序类,添加类代码,//该方法的功能是创建附加数据库的SQL操作语句,请注意底纹部分的代码应根据应用程序中数据库连接、字符串中的database的值做相应的改动 private string CreateSqlStr() { string sqlstr = ““; string datafile = System.IO.Path.Combine(dbpath, “StudentManagement.mdf“); string logfile = System.IO.Path.Combine(dbpath, “StudentManagement_log.ldf“); sqlstr = “exec sp_attach_db N'StudentManagement',N'“ + datafile + “',N'“ + logfile + “'“; return sqlstr; } private void ExecuteSql(string DatabaseName, string SqlStr) { string SqlConnectionStr = @“server=“ + servername + “;uid=“ + username + “;pwd=“ + password; SqlConnection myConnection = new SqlConnection(SqlConnectionStr); SqlCommand myCommand = new SqlCommand(SqlStr, myConnection); myCommand.Connection.Open(); myCommand.Connection.ChangeDatabase(DatabaseName); myCommand.ExecuteNonQuery(); myCommand.Connection.Close(); },设计用户界面,添加自定义窗体,项目运行结果,谢 谢!,。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






