2.8 使用过滤器和输入控件

域使用不同的机制来筛选数据。

  • 可以通过在域中选择字段并指定比较值来过滤域(和域主题)。可以配置一些过滤器,供用户来选择数据。

  • 在域设计中,还可以定义基于条件的过滤器;当报告运行时,这些过滤器不会显示在报告查看器中。

不管您要处理域还是主题中的数据,都可以在专用编辑器中定义过滤器。此类过滤器可以减少视图默认返回的数据量,因而有助于提高视图的初始性能。

为防止用户查看整个数据集,您也可以在 JRXML 主题中使用输入控件,或者使用域设计中定义的过滤器,最终用户是看不到这些控件和过滤器的。有关详细信息,请参见部分 2.8.3, 输入控件和过滤器可用性

输入控件与过滤器可以平稳交互。例如,您可以在从包含输入控件的 JRXML 主题获取数据的专用视图内创建过滤器。

服务器会根据过滤器和输入控件刷新编辑器。由于输入控件与过滤器的某些组合不会返回数据,因此可能会导致生成空视图。

注:如果结果集为空,请检查是否使用了过滤器与输入控件的不兼容组合(例如,是否将标准过滤器与仅保留过滤器相组合),或者是否使用了定义不当的高级过滤器表达式(数据必须满足多个过滤器中的所有准则,而不是只满足这些过滤器的一部分准则)。有关详细信息,请参见高级过滤

JRXML 是一种 XML 文件格式,用于保存和共享针对 ZENworks Reporting 及使用它的应用程序(例如 iReport Designer)创建的报告。JRXML 是一种开放格式,它使用 XML 标准来精确定义报告的所有结构和配置。

在某些情况下,过滤器可能会与视图参数冲突,此时,您必须通过编辑 JRXML 文件来重命名导致冲突的字段。

2.8.1 使用过滤器

可在以下位置定义过滤器:

  • 数据选择器(从域创建视图时)。

  • 专用编辑器(即使在视图基于 JRXML 主题的情况下)。

有关在数据选择器中定义过滤器的信息,请参见预过滤数据

此外,您可以使用高级表达式来控制如何将过滤器应用到一个或多个字段,以及要应用哪些过滤器。有关更多信息,请参见高级过滤

要在专用编辑器中创建过滤器,请执行以下操作:

  1. 数据来源选择面板中右键单击某个字段,然后单击创建过滤器

    过滤器面板中会显示一个新过滤器。如果过滤器面板已隐藏,则当您创建新过滤器时,该面板会显示。

    如果结果为空,请检查是否使用了过滤器与输入控件的不兼容组合。单击 ,将输入控件与过滤器面板中的过滤器进行比较。

  2. 使用过滤器中的字段来更改过滤器的值。

    根据选定的数据类型,过滤器可能是多选、单选列表或文本输入。

  3. 单击 ,然后选择最小化所有过滤器最大化所有过滤器,以切换过滤器中项目的展开状态。

  4. 单击 ,然后选择去除所有过滤器以去除过滤器。

  5. 单击 以隐藏过滤器的细节。

  6. 单击 以查看过滤器的细节。

  7. 单击全选复选框(如果显示在过滤器面板中)以选择数据集中的所有值。

    对于数字和日期,过滤器面板中不会显示全选框。

当您更改过滤器时,服务器将使用新值来确定要显示的数据。如果您只更改了过滤器中的运算符,则必须取消选择该过滤器中的值,然后重新选择该值才能应用更新的过滤器。

如果过滤器包含多个值,您并不需要重新选择所有值。更改运算符后,按住 Ctrl 单击取消选择某个值,然后按住 Ctrl 单击重新选择该值。

相对日期

可以根据相对于当前系统日期的日期范围来过滤视图中的信息。要查看此信息,可以使用基于日期的过滤器,并使用格式 <关键字>+/-<数字> 指定一个文本表达式来描述您要查看的相对日期或日期跨度。

  • 关键字指出您要使用的时间跨度。选项包括:“日”、“周”、“季”、“半年”和“年”。

  • +- 指出时间跨度是在选定的日期之前还是之后。

  • 数字指出您要包含在过滤器中的时间跨度数目。

要创建相对日期过滤器,请执行以下操作:

  1. 遵循部分 2.8.1, 使用过滤器中的指导。

  2. 在过滤器的第一个文本框中,指定用于描述相对日期或日期跨度的表达式。

  3. 在过滤器的第二个文本框中,指定过滤器的基准日期。

要创建复杂过滤器,请执行以下操作:

  1. 右键单击交叉表中的某个组成员,然后选择仅保留排除

    针对内部组创建过滤器时,出现的过滤器可能会创建为复杂过滤器。

    复杂过滤器不可编辑,但可去除。如果创建并锁定了数据选择器向导过滤器,专用编辑器中也会出现复杂过滤器。

高级过滤

如果您创建了多个过滤器,这些过滤器默认会通过隐式“与”运算符连接。也就是说,表、图表或交叉表中显示的数据就是应用所有过滤器后保留的数据。

不过,如果使用高级过滤器功能,您可以通过应用包含更复杂的嵌套“与”、“或”和“非”运算符的高级表达式,以及向单个字段应用多个过滤器,来控制显示的数据。

在以下情况下,高级过滤器非常有用:

  • 使用“与”运算符不足以解决问题时。例如,假设某家跨国公司想要查看位于环太平洋地区的商铺数据,他们可以使用以下准则创建一个高级表达式:

    • 国家/地区为美国

    • 州/省为加利福尼亚 或 华盛顿 或 俄勒冈 或 夏威夷 或 阿拉斯加。

    • 国家/地区为日本 或 印度尼西亚

      对所有这些准则使用“与”运算符将返回空视图,因为不存在位于所有这些地区的商铺。

  • 当您需要清除字段中的某些结果时。例如,如果您的食品与饮料分销公司想要查看除高价商品以外所有饮料的销售量,您可以在高级表达式中包含以下准则:

    • 产品组为饮料

    • 价格大于 39.99

      此过滤器会显示饮料产品组中的所有商品,但会过滤掉价格超过 $39.99 的商品。

这里只是列举了两个应用场景来说明高级过滤器可以达到效果并使视图变得精确。高级过滤器还可以应用于许多其他场合下。

其他高级过滤器任务包括:

  • 创建高级表达式

  • 编辑高级表达式

  • 去除高级表达式

  • 向单个字段应用多个过滤器

    注:高级过滤器可应用于视图,但过滤器细节将不会显示在预览中,也不会显示在从该视图生成的报告中。

要创建并应用高级过滤器,请执行以下操作:

  1. 部分 2.8.1, 使用过滤器中所述,为数据创建两个或更多个过滤器。这些过滤器可以是基于标准字段的过滤器,也可以是仅保留排除过滤器。

    当您创建要在高级表达式中使用的过滤器时,视图中的数据将会消失,因为大部分数据都不满足所有过滤器准则。当您创建高级表达式并将某些“与”更改为“或”与“Not”时,数据会再次显示。

  2. 过滤器面板的顶部,单击 ,然后选择显示表达式以显示过滤器表达式,针对面板。默认情况下,过滤器表达式,针对面板为空。

  3. 过滤器表达式,针对面板中,单击编辑

  4. 编辑高级过滤器面板中,使用过滤器预览窗口来查找过滤器。

    过滤器的字母指定区分大小写,并且必须采用大写。

  5. 使用字母指定输入过滤器表达式,并包含以下运算符:

    • 会缩小结果范围,只包含满足运算符前后两个过滤器的字段。

    • 会扩大结果范围,将会包含满足运算符前面或后面的过滤器的字段。

    • NOT 会排除与准则匹配的结果。

    • 括号用于将多个过滤器组合成表达式中的单个项目。

  6. 单击验证按钮检查您的表达式。

    如果表达式能够成功地用提供的过滤器运行,则会显示成功讯息。如果表达式不正确,将显示无效讯息和相关细节。

  7. 如果表达式验证成功,请单击提交

    您的视图将会更新,根据新应用的过滤器准则显示内容。

创建高级过滤器后,可将另一个过滤器添加到表达式中,或者去除现有的表达式。

注:如果想要从高级过滤器中删除简单过滤器,必须先从高级过滤器表达式中删除该简单过滤器。因此,删除过滤器会删除高级过滤器表达式。

要将新过滤器添加到现有的高级表达式,请执行以下操作:

  1. 过滤器面板中创建一个新过滤器。

  2. 过滤器表达式,针对面板中,单击编辑

  3. 编辑高级过滤器面板中,将新过滤器添加到表达式中。

    过滤器预览窗口中所有未使用的过滤器都将灰显。

  4. 单击验证以检查新表达式的完整性。

  5. 如果表达式有效,请单击提交

要从高级表达式中去除某个过滤器,请执行以下操作:

  1. 过滤器表达式,针对面板中,单击编辑

  2. 编辑高级过滤器对话框中,从表达式中去除该过滤器,然后根据需要更新表达式。

  3. 单击验证以检查新表达式的完整性。

  4. 如果表达式有效,请单击提交

使用高级表达式时,可以删除现有表达式以及创建新表达式。

要从视图中删除某个高级表达式,请执行以下操作:

  1. 过滤器表达式,针对面板中,单击编辑

  2. 过滤器表达式框中清除该表达式。

  3. 单击提交

在优化高级表达式时,可以从过滤器面板中删除未使用的过滤器。

  • 如果要从高级过滤器中去除过滤器,请将鼠标光标置于过滤器标题栏中的 上,然后单击去除过滤器

  • 如果要去除所有现有过滤器(包括高级表达式),请将鼠标光标置于过滤器面板中的 上,然后单击去除所有过滤器

2.8.2 使用输入控件

在专用编辑器中,您可以查看主题中定义向用户显示的输入控件。您可以接受控件的默认值,也可以输入其他值。专用编辑器会通过在工具栏上显示活动的 图标,来指明视图包含输入控件。单击 图标可以选择新值,或者将值另存为此视图的新默认值。

要使用过滤器在视图中添加输入控件,请执行以下操作:

  1. 创建新过滤器,或使用过滤器面板中的某个现有过滤器。

  2. 在“过滤器”中,单击新过滤器旁边的 ,然后选择显示运算符

  3. 从下拉列表中选择一个运算符,并在文本框中指定值。

    使用视图来运行报告时,该过滤器将显示为输入控件。

  4. 将光标置于 上,然后选择将专用视图另存为...

  5. 为视图命名,选择位置,然后单击保存

  6. 在工具栏上单击

    系统只会显示主题中定义的输入控件。如果主题中未定义输入控件,该按钮将灰显。

要编辑视图输入控件的值,请执行以下操作:

  1. 在工具栏上单击

    一个窗口即会显示,其中列出了主题中定义的输入控件。

  2. 选择新值。

  3. 要更改输入控件的默认值,请选中保存视图时将这些值设置为默认值复选框。

    当您保存视图时,选定的值会变成默认值。

  4. 单击确定

    专用视图即会显示更新的数据。

2.8.3 输入控件和过滤器可用性

当您运行报告时,输入控件和过滤器将显示在编辑器中。

  • 编辑视图时,可将输入控件设置为可见或不可见:

    • 设置为始终提示的输入控件将显示在编辑器中,并且在报告运行之前始终会显示。

    • 未设置为始终提示的输入控件在编辑器中不会显示,但会在报告运行时显示。

  • 可以锁定或解除锁定在数据选择器向导中创建的过滤器:

    • 解除锁定的过滤器将在编辑器中显示过滤器细节,在报告运行时,您可以通过选项按钮来使用这些过滤器。

    • 当您单击图标 时,锁定的过滤器将在编辑器中显示输入控件。但是,在运行报告时,您将无法通过选项按钮来使用这些过滤器。您可以从编辑器中去除过滤器,以便用户在运行报告时可以看到所有未过滤的数据。

  • 运行报告时,始终可以通过编辑器的过滤器面板以及通过选项按钮来使用编辑器中定义的过滤器。

为所需运行时间较长的大型视图设置输入控件时,请考虑将该视图设置为始终提示。在报告运行之前,报告查看器会提示您提供输入选项以防报告使用默认输入选项运行。

可以使用解除锁定的过滤器。如果输入控件或过滤器未显示在报告查看器中,单击选项按钮即可查看。

要将某个输入控件设置为提示模式,请执行以下操作:

  1. 在储存库中找到一个主题,然后单击编辑

  2. 控件和资源面板中的输入控件选项下,单击始终提示

要确定某个输入控件是否可见,请执行以下操作:

  1. 在储存库中找到一个主题(例如参数化报告主题),然后单击编辑

  2. 控件和资源面板上,单击输入控件的名称。

  3. 查找输入控件面板上,单击下一步

    创建输入控件面板的底部,如果可见复选框处于选中状态,则报告运行时其中会显示该输入控件。

    如果您没有为输入控件指定默认值,则当用户基于主题创建视图时,系统会提示他们选择值。

要锁定过滤器,请执行以下操作:

  1. 在数据选择器中选择字段后,单击预过滤器

  2. 双击字段面板中的某个字段。

  3. 过滤器面板中定义一个过滤器。

    有关详细信息,请参见预过滤数据

  4. 选中已锁定复选框,然后单击确定

  5. 单击打开专用编辑器。

    过滤器面板中的已锁定标题下将会显示该过滤器的名称以及有关锁定的备注。