Crystal reports 为什么主报表中的摘要字段值不传递给子报表?

Crystal reports 为什么主报表中的摘要字段值不传递给子报表?,crystal-reports,Crystal Reports,我有一个报告,其中我添加了一个子报告。在主报告中,我在详细信息部分有一个标准分数字段,我需要找出它的平均值(我使用了一个摘要字段),并将其作为参数传递给子报告,在子报告中它将链接到子报告字段-AverageScore。为此,我右键单击子报表,选择“更改子报表链接”选项,并从中将主报表摘要字段链接到子报表字段averagescore。因此,这是子报表的选择公式: {AggregateKey.AverageScore} = {?Pm-Avg of ResultSheet.StandardScore}

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

{AggregateKey.AverageScore} = {?Pm-Avg of ResultSheet.StandardScore}
预览没有显示子报表中的任何内容。但只是尝试一下,当我更改链接并将任何其他值作为参数传递时,可以使用其他字段,如

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

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

我猜,子报表中没有任何匹配记录的原因是因为主报表计算出的平均值的精度;
Average()
函数将产生一个特定小数位数的数值,该数值可能与
{AggregateKey.AverageScore}
中的数值不完全匹配


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

如果链接不起作用,您是否尝试过使用共享变量将数据传递给sib报告?@Siva,我尝试过在子报告的选择公式中使用共享变量,但是我得到一个错误“共享变量只能在打印时使用”。你能发布你的公式吗…是的,当然@Siva,我用于子报表的原始选择公式是{AggregateKey.AverageScore}={?Pm Avg of ResultSheet.StandardScore},后来我使用了共享变量并尝试将公式更改为{AggregateKey.AverageScore}=共享编号为x;您的公式错误,更改如下:
sharednumbervarx:={AggregateKey.AverageScore}我已经四舍五入了平均值。事实上,当我试图将舍入平均值传递给子报表并使用独立公式显示它时,我看到它以舍入格式显示。因此,我认为舍入在这里不是问题。我找到了解决方案,我所需要做的就是将记录选择公式更改为{AggregateKey.AverageScore}=round({?结果表的Pm平均值.StandardScore})。因为我在选择公式中没有四舍五入的平均分数值,所以我在子报表中没有得到匹配的记录。现在完成了。感谢Siva和Ryan的时间和帮助。默认情况下,CR不会以非常高的精度显示数值。字段的值可以是
2.3333333…
,但它会显示如报告本身上的
2
2.33
,在调试时很容易使您陷入困境。