【问题标题】:Why summary field value in the main report does not pass to the subreport?为什么主报表中的汇总字段值不传递给子报表?
【发布时间】:2014-10-13 21:17:49
【问题描述】:

我有一个报告,其中我添加了一个子报告。在主报告中,我在详细信息部分有一个标准分数字段,我需要找出它的平均值(为此,我使用了一个汇总字段) 并将其作为参数传递给子报表,它将链接到子报表字段-AverageScore。为此,我右键单击子报表,选择“更改子报表链接”选项,然后从那里链接主报表子报表字段averagescore的汇总字段。因此,这是子报表的选择公式:

{AggregateKey.AverageScore} = {?Pm-Avg of ResultSheet.StandardScore}

预览不会在子报告中显示任何内容。但只是为了尝试一下,当我更改链接并将任何其他值作为参数传递时,比如说其他一些字段,例如

{AggregateKey.AverageScore} = {?Pm-ResultSheet.TotalScore}

或者只是任何其他数字,然后我看到显示值的子报告告诉我正在传递值。但是当我使用汇总字段作为参数时,为什么这不起作用?

【问题讨论】:

  • 如果链接不起作用,您是否尝试过使用共享变量将数据传递给同胞报告?
  • @Siva ,我尝试在子报表的选择公式中使用共享变量,但出现错误“共享变量只能在打印时使用”。
  • 你能发布你的公式吗...
  • 是的,当然@Siva,我用于子报表的原始选择公式是{AggregateKey.AverageScore} = {?Pm-Avg of ResultSheet.StandardScore},后来我使用共享变量并尝试将公式更改为 {AggregateKey.AverageScore}=Shared numbervar x;
  • 你的公式错误改成这样:Shared numbervar x:={AggregateKey.AverageScore};

标签: crystal-reports


【解决方案1】:

我的猜测是,您在子报告中没有得到任何匹配记录的原因是因为您从主报告中计算的平均值的精度; Average() 函数将生成一定小数位数的数值,这可能与 {AggregateKey.AverageScore} 中的值不完全匹配。

例如,您的主报告在 1、2 和 4 的 3 条记录中具有分数,这将导致 Average({ResultSheet.StandardScore}) 的值是 2.33333...,这是一个非常难以在相等比较中正确使用的数字首先以某种方式四舍五入。

【讨论】:

  • 我已经把平均值四舍五入了。事实上,当我尝试将四舍五入的平均值传递给子报表并使用独立公式显示时,我看到它以四舍五入的格式显示。所以我认为四舍五入在这里不是问题。
  • 我找到了解决方案,我需要做的就是将记录选择公式更改为 {AggregateKey.AverageScore} = round({?Pm-Avg of ResultSheet.StandardScore})。因为我做到了选择公式中没有四舍五入的平均分值,我在子报表中没有得到匹配的记录。现在已经完成了。感谢 Siva 和 Ryan 的时间和帮助。
  • 默认情况下,CR 不会以非常高的精度显示数值。字段的值可以是2.3333333...,但它会在报告本身上显示为22.33,并且在调试时很容易搞砸。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
相关资源
最近更新 更多