基于C#的动态水晶报表交叉表实现成绩单

来源 :考试周刊 | 被引量 : 0次 | 上传用户:lwy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005集成在一起,如何能动态地将多表以交叉表的方式实现是一种相当关键的技术难点,本文从完成“阳易教学分析系统V1.0-成绩交叉分析”模块来向读者做一个详细的介绍。
  关键词:水晶报表 动态 交叉表
  
  一、引言
  
  几乎在所有的应用程序中报表都是程序员头疼的问题。在.Net环境下包含了功能强大的报表工具:水晶报表(Crystal Report)。
  Crystal Reports通過数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。为了向开发人员提供最灵活的数据访问方法,Crystal Reports 数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。
  ●拉模型
  在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来(见图1)。使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由Crystal Reports本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。
  
  2.系统模块的实现
  第一步、启动VS2005,新建一个架构文件。
  a.在解决方案资源管理器中,右击项目名,指向“添加”,然后单击“添加新项”。
  b.在“添加新项”对话框的“类别”区域,展开文件夹,然后选择“数据”。
  c.在“模板”区域选择“数据集”。
  d.修改默认名称 DataSetCross.xsd。
  这就创建了一个新的架构文件(DataSetCross.xsd),以后将用它来生成强类型数据集。该架构文件将显示在ADO.NET数据集设计器中。
  e.从“工具箱”中拖放一个DataTable,放入DataSetCross.xsd中,创建几个字段:名字、课程名、成绩(见图4)。
  第二步、新建一个创建新报表。
  a.指向“添加”,单击“添加新项”。
  b.在“添加新项”对话框中,从“模板”区域选择Crystal Report,将报表命名为CrystalReport006,同时根据前面的数据集DataSetCross.xsd设计交叉表(如图5)。
  
  第三步、新建窗体文件,命名为“Form012”。
  a.拖放控件tableLayoutPanel1、groupBox2、checkBox3、checkBox2、checkBox1、button1、crystalReportViewer1、statusStrip1,布局和设置如图6所示。
  
  第四步、代码实现。
  a.在Form012类前面添加语句
  using System.Data.OleDb;
  using CrystalDecisions.CrystalReports.Engine;
  using CrystalDecisions.Shared。
  b.给Form012类添加类字段
  tempDataView:
  private DataView tempDataView; //
  c.自定义私有方法myDataView(),实现连接数据库,读取前面所提的三张表的名字、课程名、成绩字段,返回一个内存中的数据视图,代码如下:
  private DataView myDataView( )
  {
  DataSet tempDataSet = new DataSet( );
   string connString = ″Provider=SQLOLEDB;Data Source=.;User ID=sa;Initial Catalog=Test″;
  OleDbConnection myOleDbConnection = new OleDbConnection(connString);
  string sqlString = ″select 名字,课程名,成绩 from 学生,课程,成绩 where 学生.学号=成绩.学号and课程.课程号=成绩.课程号″;
  OleDbDataAdapter myOleDbDataAdapter = new OleDbDataAdapter(sqlString, myOleDbConnection);
  myOleDbDataAdapter.Fill(tempDataSet, ″学生课程成绩″);
  return tempDataSet.Tables[″学生课程成绩″].DefaultView;
  }
  d.在Form012_Load事件中添加tempDataView=myDataView();来调用上述方法。
  e.双击“输出报表”按钮,在button1_Click事件中加入如下代码:
   CrystalReport006 myCrystalReport006 = new CrystalReport006( );
  DataSetCross myDataSetCross = new DataSetCross( );
  //产生动态条件,存入字符ChooseStr中
  string ChooseStr = ″″;
  if (checkBox1.Checked) ChooseStr = ChooseStr ″课程名=’″ checkBox1.Text ″’″;
  if (checkBox2.Checked) ChooseStr = ChooseStr ″ or ″ ″课程名=’″ checkBox2.Text ″’″;
   if (checkBox3.Checked) ChooseStr = ChooseStr ″ or ″ ″课程名=’″ checkBox3.Text ″’″;
   if (ChooseStr == ″″)
   { MessageBox.Show(″请选择要显示的字段″); return; }
   if (ChooseStr.Substring(0, 4) == ″ or ″)
  ChooseStr = ChooseStr.Substring (4, ChooseStr.Length - 4);
  //产生视图tempDataView,对应存入架构文件myDataSetCross中
  tempDataView.RowFilter = ChooseStr;
   foreach (DataRowView drw in tempDataView)
  {
  DataRow dr = myDataSetCross.Tables[″DataTableCross″].NewRow();
  dr = drw[″名字″]; dr = drw[″课程名″]; dr = drw[″成绩″];
  myDataSetCross.Tables[″DataTableCross″].Rows.Add(dr);
  }
  //刷新crystalReportViewer1,并将crystalReportViewer1显示出新的数据集结果
  crystalReportViewer1.Refresh();
  myCrystalReport006.SetDataSource(myDataSetCross.Tables[″DataTableCross″]);
   crystalReportViewer1.ReportSource = myCrystalReport006;
  第五步、程序运行,查看结果。
  a.任意选择各种课程;
  b.点击“输出报表”按钮;
  c.重复a和b,可以看到有不同的交叉表输出。
  
  
  结束语
  
  用C#實现动态地水晶报表交叉表的实现方式,在许多项目中都将会用到,掌握其中的细节将会对软件开发者带来很大的帮助。
  
  参考文献:
  [1].NET环境下水晶报表使用总结
  http://blog.csdn.net/vwfkyy/archive/2007/08/30/1765960.aspx
  [2]Microsoft Visual Studio 2005中使用水晶报表
  http://blog.csdn.net/zhaobinheng/archive/2007/08/14/1742200.aspx
  [3]VS2005下水晶报表如何实现动态数据源绑定
  http://www.cnblogs.com/newwind521/archive/2007/08/31/876884.html
其他文献
摘 要:本文从时代的角度来详谈综合素质的涵义,分析了大学生综合素质现状、大学生综合素质欠缺的影响因素以及培养和提高大学生综合素质的模式和方法,为经管类大学生综合素质教育提出了措施。  关键词:大学生 综合素质 经管类专业 措施    当今社会正处于21世纪科学技术文化高速发展时期,对高科技人才的素质也提出了更高的要求。全面综合性人才的培养符合当今社会发展的需要,是建设有中国特色社会主义的重要保证。
关键词:国际公约;遗留毒弹;伤人事件;隐患;禁止化学武器公约;应急机构;沟通交流   中图分类号:K265 文献标识码:A 文章编号:1009 — 2234(2021)05 — 0101 — 06   日本境内的制造毒剂的大久野岛在战争期间研究并制造生产了大量的毒剂,装填炮弹后源源不断的输入到中国。战争期间,位于齐齐哈尔的516及位于哈尔滨的731两个臭名昭著的恶魔部队,相互勾结,研制
摘 要:高校青年教师已成为高校教育教学的中坚力量,且所占比例不断增大,高校青年教师在其职业发展的过程中会遇到一些问题,及时处理好这些问题,是青年教师快速成长的需要,本文就此进行了探讨。  关键词:高校青年教师 职业发展 问题 对策    随着我国高等教育的快速发展,高校在校学生人数成倍增加,高校原有教师人数远不能满足教育教学需要,大批高校毕业生被补充到教师队伍中来,成为高校教师中的新生力量。为使青
关键词:新时期;社区;党建;红色物业   中图分类号:D267 文献标识码:A 文章编号:1009 — 2234(2020)04 — 0029 — 03   “党的基层组织是党在社会基层组织中的战斗堡垒,是党的全部工作和战斗力的基础。并且村、社区党组织和街道、乡、镇党基层委员会是领导基层社会治理和领导本地区工作的关键。”这是《党章》中关于基层党组织建设的规定,由此可以说城市社区党建对强
绰号“核足球”的黑色提包是美国总统出行时的必备之物。但和文艺作品描绘的不同,它并未包含足以毁灭世界的“核按钮”,而是更接近公文包的本来用途。   它是皇冠和权杖的现代等价物,是最高权力的象征。由于和美国总统形影不离,这个看似无伤大雅的提包,总被电影和小说吹捧为终极权力的象征,是毁灭世界的末日机器。   该公文包内部有坚固的金属框,表面包裹着黑色皮革。它的官方称谓是“总统的应急书包”,不过相比之
新课改形势下的教育,是把学习的内容拓展到了课前、延伸到了课后,这样给了学生很多的学习机会和发展空间。《化学》课程标准告诉我们,这是一门以青少年的生活为基础,以培养良好实验技能、乐于探究、热爱生活的新时代青少年为目标的活动型综合课程。学生的课前准备是教学活动的需要,也是培养学生自主学习能力和分析处理信息能力的重要手段,是培养学生探究能力的有效途径之一。学生可以在课前对这次活动主题进行相应的课前体验、
摘 要:该研究采用统计分析法,对E时代我校部分学生的大学英语综合成绩进行了分析。受试者为晋中学院58名大学英语教师和273名非英语专业学生。统计结果发现:学生的入学成绩与大学期间英语成绩出现不平衡性;师范类与非师范类学生的英语成绩存在着一进一退两种截然不同的发展态势;大学生毕业后在社会上的英语实践能力存在很大的差异性;现时代“大英语”教学模式的独特作用。该研究发现有助于激发大学英语教师反思现有教法
摘 要:和谐民族关系的构建要以处理好民族关系的问题为根本,而影响民族关系的因素有很多方面。本文以五普、六普数据资料为依据,以丝绸之路经济带上甘肃、新疆两省人口迁徙为视角,考察分析甘肃新疆多民族区域民族迁徙交往交流交融的背景因素,得出甘肃、新疆两省历史交融、文化相通、地缘相近,产业关联、发展相连,因此民族迁徙、交融、互动频繁。这为当前深化民族团结进步、促进各民族交往交流交融,加强我国民族理论政策建设
《帝国》杂志(Empire)给已经播出的13集《黑镜》做了排名。第三季的《圣朱尼佩洛》排名第三,《终极玩家》排名最末,剩下几集则排在第四、第六、第八和第九。在电影网站IMDb统计的用户评分中,第三季有四集进入前六,剩下两集排在第八和第十二。  本文参照主创查理·布鲁克和安娜贝尔·琼斯在第三季之后接受的采访,讲述20件关于《黑镜》你可能不了解的幕后故事。    《圣朱尼佩洛》是第三季第一个完成的剧本
摘 要:本文分析了同声道语音检测的典型算法SAPVR算法,介绍了算法的基本思想和流程,并用MATLAB工具进行了验证。  关键词:同声道语音 频谱自相关峰谷率算法    引言    同声道语音是指目标说话人语音混杂着另一个干扰者的说话语音。同声道语音检测属于语音增强技术,是目前国际上的一个研究热点和难点,国内少有涉及者。  要实现目标语音的提取,首先要能正确地检测出同声道语音帧。同声道语音和单个说