开篇

本篇文章主要是帮助刚开始接触CrystalReport报表的新手提供一个循序渐进的教程。该教程主要分为三个部分1)CrystalReport的基本使用方法;2)使用CrystalReport对数据进行分组求和;3)CrystalReport如何使用自定义的数据源(如内存中的DataTable表)三个方面来写。相信看懂了这个教程之后,对于自己项目中的实现报表这一功能,应该就能轻松的应对了。

一    CrystalReport模板的制作及显示

A模板的制作

1、右键【项目属性】添加一个水晶报表(在vs中需要安装CrystalReport模块,不同vs版本下载不同的CrystalReport版本:CrystalReport下载链接:http://scn.sap.com/docs/DOC-7824)

2、添加报表的设计界面如下:一个报表包括(报表头,页眉,详细资料,报表尾,页眉)5个基本部分。

3、现在我们需要给新建的报表添加一个数据源,右键左边的【数据库字段】选择相应的数据源,进行绑定。我这里选择的是sqlserver数据库。

4、输入数据库的登录信息,然后选择需要绑定的数据库表,除了绑定数据表之外,还可以绑定sql语句查询的结果,以及存储过程和视图,下面给出绑定数据库表格,和绑定sql查询。

1)绑定数据库表格

2)点击连接下面的【添加命令】绑定sql语句。

5、绑定数据库之后在报表左侧的【字段管理器】中就会出现该表以及sql查询结果的的相应表头字段。

6、把相应的字段在报表视图中进行布局。

到此水晶报表的模板已经做好了。注意:页眉中的userName,courseName,score是可以更改。

B模板的显示

1、首先在窗体上拖一个CrystalReportView控件作为显示报表模板。

2、在form_load事件里面写如下代码:

CrystalReport1 cr = new CrystalReport1();//实例化一个报表模板

this.crystalReportViewer1.ReportSource = cr;//为报表显示控件设置数据源

3、运行

报表设计点丑,但是你可以根基自己的风格进行排版设计,如字体,大小,颜色等啦。

二    CrystalReport分组统计

我们在第一部分已经实现了每个同学成绩的报表输出,接下我们需要对每个同学进行分组统计,求每个同学的平均成绩。

1、在左侧的【字段资源管理器】中右键【组名字段】点击【插入组】

2、选择要分组的字段,然后点击【确定】

3、这是在报表的设计器中会自动添加一个【分组】的部分。

4、在分组头中显示每组的名称,然后我们可以在组尾中进行成绩平均值的统计。点击【运行总计字段】【新建】。

5、点击【确定】会弹出编辑运行总计字段,然后在设置avg的值。

6、点击【确定】后,在左侧的【字段资源管理器】中的【运行总计字段】会显示【avg】。

7、接下来,就可以把这个字段拖到报表设计器上的【组尾】部分中。

8、这下分组统计的报表模板就已经做好了。下面对报表模板进行整理一下,然后进行显示。

三    CrystalReport绑定自定义的数据源

我们在第一步,第二步中都是使用sqlserver(数据表,查询结果等)作为数据源,都是一个二维表,然后通过二维表的表头去布局报表模板,然后报表在显示的时候自动连接sqlserver,根据设置获取数据并显示,通过这样的方式我们的对数据的控制权就不够。而有时候我们需要在内存中对数据进行加工处理,形成一个自己的datable表,然后再绑定到报表上进行显示。下面我们就演示一下,如何使用内存的datatable表作为水晶报表的数据源。

1、定义一个DataTable数据表,并添加一些数据(作为自定义的数据源)。

代码如下:

privateDataTable GetCustomDataTable()

{

DataTable dt= newSystem.Data.DataTable();

dt.Columns.Add("id", typeof(string));

dt.Columns.Add("userName", typeof(string));

dt.Rows.Add("430400","tjm");

dt.Rows.Add("430401", "lw");

dt.Rows.Add("430402", "tj");returndt;

}

2、定义好数据源之后,我们就需要根据我们自定的数据源建立一个报表模板。通过前面两步我们都知道,报表模板的设计都需要数据源的字段的,所以我们的添加一个dataset数据集来制作报表模板。

3、然后在这个数据集上定义一个虚拟的表头就行了,这个虚拟的表头必须和内存中定义的数据源表头是一致的,方便我们进行报表的设计。

4、然后在报表的设计器中,添加我们建立的自定义数据源,并进行设计。

5、然后在Form_load中为报表绑定数据自定义的数据源

private void Form1_Load(objectsender, EventArgs e)

{

CrystalReport2 cr= newCrystalReport2();

cr.SetDataSource(GetCustomDataTable());//数据源的绑定(DataTable类型)this.crystalReportViewer1.ReportSource =cr;

}

6、点击运行,结果就是我们自己定义的数据表中的数据。

总结

希望自己写的这个教程,对刚接触的水晶报表的同学有一些帮助。其中可能会有一些错误的地方,欢迎各位指正。

winform定义数据源名称_WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源...相关推荐

  1. winform定义数据源名称_winform ComboBox自定义数据源实现用户输入时出现与用户输入匹配的项...

    ComboBox自定义数据源实现用户输入时出现与用户输入匹配的项using System; using System.Collections.Generic; using System.Compone ...

  2. CrystalReport水晶报表创建子报表

    1.准备一个水晶报表和2张有关联的数据库表 2.插入子报表 输入名称 报表向导,添加子报表对应的数据表 选择要在报表中显示的字段 忽略可选页面,最后完成回到这个页面,点击链接 3.链接设置-关联关系 ...

  3. crystalreport 水晶报表设置首页不显示页码

    最近在web上用水晶报表来打印报表,其中要求跟在word一样设置水晶报表设置首页不显示页码.于是水晶报表的帮助里面找到了首页不显示页码例子,现在做记录吧. 1.在水晶报表公式中新建公式字段,这里命名为 ...

  4. mysql 60万_MySQL5.7中60万数据的表分组统计很慢

    我有个表service_message大概有60万条数据,表中记录了不同设备收到消息的时间: SHOW CREATE TABLE service_message CREATE TABLE `servi ...

  5. 将报表模板中数据集的数据源名称与服务器中的数据源名称修改一致.,连接数据库,服务器端的几个常见错误...

    1错误关键字:数据集ds1中未设定数据源名称 现象: 产生数据工厂:com.runqian report4.dataset.SQLDataSetFactory 失败:数据集中,数据集ds1 中未设定数 ...

  6. Microsoft Visual Studio 2005中使用水晶报表

    Microsoft Visual Studio 2005中使用水晶报表 沈阳 王智 OICQ:16994162 http://wangzhihome.51.net/ 2006-4-11 如有转贴请注明 ...

  7. java web水晶报表_WEB开发中水晶报表的使用心得

    [需求] 最近在项目开发过程中,客户要求用Crystal Reports生成pdf格式的报表,并实现自动打印功能. [实施索引] 1.创建水晶报表: 2.Java中利用报表组件包将报表结果生成pdf: ...

  8. 未发现数据源名称_在Power BI中管理数据源Analysis Services

    添加数据源 有关如何添加数据源的信息,请参阅添加数据源. 如果要连接到多维或表格服务器,请选择 Analysis Services 作为"数据源类型" . 填写数据源的信息(包括服 ...

  9. 润乾报表 :com.runqian report4.dataset.SQLDataSetFactory 失败:数据集中,数据集ds1 中未设定数据源名称,且无默认数据源,请检查数据源设定

    润乾报表 产生数据工厂:com.runqian report4.dataset.SQLDataSetFactory 失败:数据集中,数据集ds1 中未设定数据源名称,且无默认数据源,请检查数据源设定 ...

最新文章

  1. Elasticsearch上手——熟悉基本操作
  2. JS_ECMA基本语法中的几种封装的小函数
  3. Twice enter press click will trigger backend roundtrip
  4. Tomcat的三个端口
  5. 接口定义【领域对象】
  6. linux转换大小写的脚本代码,文件名大小写转换的shell脚本
  7. 加深认识与理解ADO.NET
  8. wkhtmltopdf中文显示空白或者乱码方框
  9. sps忘记保存文档怎么恢复_路由器管理员密码忘了怎么办【解决方法】
  10. linux 校园网 热点,Linux/Ubuntu 16.04 使用校园网客户端Dr.com DrClient 有线连网,同时开启WiFi热点...
  11. STM32F103_study60_The punctual atoms(Input capture experimentInput)
  12. 深度学习(十三) Adversarial Attack 理论部分
  13. 思科CISCO交换机端口升级方案
  14. 编程语言c语言程序包括的几种语句
  15. 《Web API 的设计与开发》读书笔记
  16. Codeforces Round #599 (Div. 2) B2. Character Swap (Hard Version)
  17. php 半角 全角 转换,PHP半角/全角转换函数
  18. 2022款联想拯救者Y9000P和Y9000X的区别
  19. 如何在EDUIS中导出ETL字幕模板_Arctime Pro字幕软件 2.0 简单强大高效的跨平台字幕制作软件...
  20. Web scraper使用教程-基本用法

热门文章

  1. java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
  2. Java项目导入eclipse后项目出现JRE System Library [JavaSE-1.8](unbound)
  3. android 默认dimens_Android开发——自动生成Android屏幕适配的dimens.xml文件
  4. 【CF1152F】Neko Rules the Catniverse(动态规划)
  5. 7.25 8figting!
  6. Codeforces976D Degree Set 【构造】
  7. (三) 弦截法(试位法)求根
  8. 表迁移工具的选型-复制ibd的方法
  9. vs2010上opencv配置
  10. asp.net 导出word文档