动态分组Crystal Reports 9

5

我有一个水晶报告,其中有一个报告参数,可以是1到100之间的值。如果该值小于50,则需要按CustomerID分组。如果该值大于50,则需要按OrderID分组。

我一直在网上搜索如何做到这一点,我找到了几个链接,说可以通过公式来实现。因此,在公式中我有:

if {ReportParameter} < 50 then
    {TableName.CustomerID}
else
    {TableName.OrderID}

我手动创建了一个正确筛选数据的组,但是当我将公式拖入分组类别时,它对我不起作用。

我是否漏掉了额外的步骤?


1
几个问题:当您说“手动创建了一个组”时,是指您只是将组插入为{TableName.CustomerID}和{TableName.OrderID}吗?当您尝试按此公式分组时,当您说“它不起作用”时,您到底是什么意思? - Ryan
是的,我插入了组(插入>组),只是为了看看是否能够成功地对数据进行分组,这起作用了。因此,我将标签从组部分中移除,并尝试在那里放置一个公式,但这并没有起作用。 - coson
我认为使用该公式进行分组没有问题。但是,记录没有被分组,这是什么问题呢?当您执行此操作时,显示的分组名称是什么? - Ryan
我忘了提到,我不想显示客户ID,而是希望在第一次插入组时显示客户名称。因此,我右键单击报表左侧的灰色区域,选择“更改组”,启动更改组选项,并转到选项选项卡以自定义组名称字段。 - coson
它没有正常工作,因为记录没有按照应该的方式分组。 - coson
我建议您检查一下您的组专家,确保您正在按照PowerUser所建议的公式进行分组,并且没有定义自定义名称。当您运行报告时,组名必须在组标题中显示出来...无论它是一个空值还是实际值,它都应该给您一个提示,以便了解发生了什么。 - Ryan
2个回答

1

好的,这是我最终的解决方案:

我定义了公式,但没有将组链接到公式。所以我回到了组标题 > 更改组 > 更改组选项 > 选项标签页

并指向我的公式名称,它就起作用了。

我以为将公式添加到组标题中,CR会自动将我的公式与组标题关联起来。唉!


0

我有几种方法可以解决这个问题...

  1. 如果我正确理解了您的后续评论,您所做的只是更改了组的显示名称,而没有实际更改分组。我自己尝试了一下,看起来是这样的。

  2. 其次,(如果我错了,请纠正我)您不能在公式上进行分组。我也在CR2010中尝试过,但无法做到。 (编辑撤回。Ryan是对的。我错了)

  3. 我建议使用报表->组专家查看分组情况。默认情况下,它也应该在您的工具栏上。

我可以想到两种设置报告的方法,可以使这个问题不存在:

  1. 制作两个单独的报告,每个视图一个。适当设置选择条件

或者

  1. 制作一个主报告。在这里设置您的组、页面和报告标题和页脚。在数据进入Crystal之前,创建一个字段作为您的“索引”(也许使用您列出的公式),并对其进行分组。
  2. 创建2个详细信息子部分。如果您想更改组的标签,请将公式字段拖放到组标题上。
  3. 如果{ReportParameter} < 50,则抑制第一个子部分。在其中创建一个子报表,并按{OrderID}对该子报表进行分组。
  4. 如果{ReportParameter} > 50,则抑制第二个子部分。在其中创建一个子报表,并按{CustomerID}对该子报表进行分组。

1
我经常根据公式进行分组。我的大多数报告都包括一种灵活的分组方式,允许用户精确地指定coson试图实现的目标...也就是说,基于一个参数,按照这个字段进行分组,否则按照另一个字段进行分组。我在XI和2008版本都做过这样的操作,并没有遇到问题。 - Ryan
谢谢。我已经相应地更改了我的答案。我不知道为什么会这样想。 - PowerUser
为了我的了解,您能定义“灵活组”吗?我不熟悉这个术语。 - PowerUser
“灵活组”只是指参数化组 - 可以根据报告运行实例采用多个可能的字段和/或计算值的组。抱歉,也许这不是常用术语,但我不知道该怎么称呼它 :) - Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接