"本文主要介绍了如何在水晶报表中筛选数据,包括通过选择专家构造查询条件、在公式工作室中编辑查询条件以及编写代码过滤数据的方法。此外,还详细讨论了水晶报表制作的相关知识点,如数据来源模式(推式和拉式)、字段类型、操作分组、向下钻取、记录排序、格式化编辑器的使用、图表制作、交叉表制作以及水晶报表的优缺点。"
水晶报表是用于创建复杂和定制报告的工具,它提供了多种方式来筛选、组织和展示数据。筛选数据是报表设计的关键部分,可以通过以下几种方法实现:
1. **通过【选择专家】构造查询条件**:在水晶报表中,你可以使用“数据库专家”来选择要包含在报告中的字段,并构建相应的查询条件,以便只显示满足特定标准的记录。
2. **在【公式工作室】中编辑查询条件**:公式工作室允许你创建自定义的计算和逻辑,以确定哪些数据应显示在报表中。你可以利用内置函数、报表字段和运算符构建复杂的表达式。
3. **编写代码过滤**:在编程环境中,例如在C#或VB.NET中,可以设置浏览控件的`SelectionFormula`属性,直接用代码指定筛选条件。例如,`this.CrystalReportViewer1.SelectionFormula = "{Hr_Staff.Sex} = '男'";` 这行代码将筛选出性别为男性的员工记录。
水晶报表支持多种数据来源模式:
- **推模式**:在这种模式下,应用程序负责准备数据集并将其推送到水晶报表,这通常涉及创建DataSet,添加DataTable,并在报表中选择数据源。
- **拉模式**:水晶报表会直接从数据库拉取数据,用户可以直接选择数据库表、存储过程或查询语句作为数据源。
报表中的字段可以分为多种类型:
- **数据库字段**:这些字段直接来源于数据库,如表、视图、存储过程等。
- **公式字段**:通过内置函数、运算符和报表字段构造的自定义表达式。
- **参数字段**:允许用户输入值以动态筛选数据。
- **组名字段**:用于对数据进行分组。
- **运行总计字段**:计算报表中的动态总计。
- **SQL表达式字段**:基于源数据库的SQL语法构建的字段,但推模式下无法直接创建。
- **特殊字段**:如当前日期、时间戳等。
- **未绑定字段**:不直接关联数据源的字段,需要手动设置值。
使用参数字段时,需要创建参数,实现其功能并为其赋值。例如,可以创建一个名为`EndOrderDate`的参数,然后在代码中设置参数的值以过滤订单日期。
水晶报表还提供了丰富的功能,如操作分组以按需组织数据,向下钻取以查看详细信息,记录排序以控制数据的显示顺序,格式化编辑器用于美化报表的样式,图表和交叉表用于直观地表示数据。尽管水晶报表有其优点,如灵活性和强大的数据处理能力,但也存在一些缺点,如学习曲线较陡峭,性能可能受到数据量的影响等。