Crystal Report - 在组头中打印条件计数

时间:2013-09-24 00:34:59

标签: vb.net crystal-reports

我一直在寻找答案的日子,所以我希望我能在这里阐明这个话题。我没有长时间处理水晶报告,所以我将尽可能多地提供详细信息。

我正在使用VB.net(2005)生成水晶报告。水晶报告使用了我在数据库中创建的View。我可以正确访问所有数据和显示值。

我的报告中有一个按标识符字段分组的组。我还有一个名为'Passed'的布尔字段,无论是真还是假,都反映了具有该给定标识符的电路板是否通过测试。

例如,假设标识符为xxxxxx的板有6条记录,3条为真,3条为假(意味着它传递了3次,失败了3次)。我被要求在小组标题中提供总计的电路板测试历史记录,详细说明它通过了多少次并且测试失败。

  • 我已考虑保留一个运行总计,但这是不正确的,因为运行总计只能在评估记录后正确显示(在标题已经打印之前尚未评估记录)。
  • 我尝试使用共享或全局变量的路径,变量在详细信息部分中递增,在组页脚中重置,并显示在组头中。这可能会生成正确的值,但会在下一组的开头打印它们,而不是当前组。
  • 我也尝试过使用Count表达式,但是我找不到任何关于如何以我需要的方式使其成为条件的东西。
  • 我可以在子报告中执行此操作,但我认为有更好的方法。

有没有人有任何想法或至少提示我可以在不使用子报告的情况下实现这一目标?

2 个答案:

答案 0 :(得分:0)

在详细信息部分添加一个公式,在该公式中定义共享变量。将传递的标识符的计数分配给一个共享变量,将失败的标识符分配给其他共享变量。

在组头中添加两个公式(一个用于传递,另一个用于失败)并放在代码

之下
shared numbervar num;

num;

请注意,此处num是一个示例共享变量名称。您必须将其替换为详细信息部分中提到的共享变量名称。

在组页脚中添加另外两个公式,并将共享变量值设置为0。

我希望这有帮助。

答案 1 :(得分:0)

对于某些标识符,您有6个记录中有6个记录,3个记录失败,现在您要显示标题上的记录数。 Below solution will satisfy this problem.

创建公式

`If <Field=false>
then 1
else 0`

现在将此条件放在详细信息部分并获取值的总和,同样对true执行相同操作并将其放在详细信息部分。

Now you have the counts saperately for both true and false

现在创建另一个公式并粘贴以下代码并将其放在组标题部分。

EvaluateAfter({above created forumla});

Sum ({above created formula}, {ORDERDETAIL.DATEE})

true执行相同的操作,并将其放在组标题中。

现在你有小组标题中的计数