我想做的应该很简单。我以前从未使用过 SSRS 变量,这可能是一个非常好的解决方案。但这目前对我不起作用。我有一份带有几个子报告的父报告。父报表仅返回 6 列,在这种情况下,仅返回 2 行。在这两行中都有一个名为 Program 的列,它恰好是两行的相同值。现在我想将此 Program 值传递给我的一个子报表。我不知道为什么 SSRS 不让我传递这个值,但是当我为这个子报表配置参数值时,我选择了父数据集和这个 Program 字段。但是当我尝试运行父报告时,这个子报告有错误:
Data retrieval failed for the subreport, 'Subreport1', located at: /Incoming/Risk Assessment 25mar13. Please check the log files for more information.
所以我想我会自己测试这个子报告,看看它是否是问题所在。但是,当我使用来自父报告的程序值运行此子报告(风险评估 25mar13)时,它生成了 0 条记录。但是,当我改为选择“所有”程序时,此子报表确实显示了数据。如何将值从父报表数据集传递到这些子报表之一?我为子报表上的 Program 参数值尝试了这个表达式:
=Fields!program_providing_service.Value
但是父报表还是有这个错误或者超时。尽管当我使用相同的 Program 值运行此子报表时,它仅在几秒钟内呈现。所以我不认为子报告是问题所在。
另一个注意事项是父报表有一个 tablix。此 tablix 有一个行组,覆盖整个 tablix。这个sureport占据了这些tablix行之一。此行组在“event_log_id”字段上的父报表数据集的字段上分组。但是,此子报告没有 event_log_id 作为其参数值之一。
但父报表数据集确实具有发送到子报表的其他值,包括程序字段值。而且我知道我正在将正确的值从父报表发送到此子报表,因为我在父报表的文本框中创建了表达式以显示父数据集中的第一个字段记录。除了一个 DATETIME 值之外,这些字段记录都是 UNIQUEIDENTIFier 值。
我还尝试将子报表参数值设置为:
=First(Fields!program_providing_service.Value, "DataSetName")
对于每个参数,因为父数据集中有多个记录。