【发布时间】:2019-05-07 08:21:04
【问题描述】:
我的 SSRS 主报告中有两个数据集和一个子报告。
我需要创建第三个 - 总计表或矩阵,它从每个数据集和子报表中返回一个字段。
看起来像这样(开始)
首先,我构建了一个表并添加了一个列来使用以下值进行测试。 (这在总行中)每个元素单独在各自的行中。
=ReportItems!tps_actual4.Value + ReportItems!Textbox1230.Value
tps_actual4 来自一个数据集。 Textbox1230 来自不同的数据集。
出现的第一个错误是:
"The value for the DataSetName property is missing"
如果我将代码更改为类似这样的内容
=First(ReportItems!tps_actual4.Value, "Master_Data_Set") + First(ReportItems!Textbox1230.Value, "Secondary_Data")
我收到另一个错误,内容如下:
The value expression for the textrun ''.. uses an aggregate function on a report item. Aggregate functions can be used only on report items contained in page headers and footers.
我们在这里没有引用一个数据集。我不知道如何解决这个问题。
第二个问题是Textbox1230的情况,因为有六行数据,所以返回了6次。如何在我的逻辑中指定 case 语句何时添加 Textbox1230
最后,我什至不确定如何引用子报表,因为我们还需要访问子报表中的两个字段。
谢谢。
Grand Total column1 column2
Dataset1 Values a x
Dataset2 Values b y … and so on
Subreport Values c x
Grand Total Sums a+b+c x+y+z
以上是一个excel样本,希望它有助于理解——列将继续第一行数据来自一个数据集。来自另一个等的第二个和总计将这些值加在一起以获得总计。
【问题讨论】:
-
您的查询可以为其他 2 份报告提供支持。在 sql server 端(作为新查询或 proc)建立聚合,但总和。您将不得不利用临时表或变量来完成此操作。然后使用 ssrs 作为渲染工具来锚定数据。如果您在每个 tablix 上计算数据,此解决方案将不起作用。
-
@junketsu 我考虑过这一点,但是我们获得这些字段的复杂性非常耗时,我不想重复使用预先存在的 3 个查询的第三个查询并重新计算所有数据。 (资源和时间效率很低)
-
因为您已经准备好查看每个 tablix、文本框。并拥有如此复杂的指标。与让另一个业务用户加入您的团队相比,您最好制作一个 proc 并做一次腿部工作,这样做会给出相同报告的味道(但没有值
-
我很想用 SQL 构建它,但至少对于这个项目来说,复杂性如此多样化,每个 tablix 的代码非常复杂,绝对不是理想的选择。虽然可能创建一个调用其他程序并返回数据并更新本地诱惑表的过程可能是一个好主意(再次运行和重新运行复杂的脚本,我担心会导致很多缓慢/命中系统)。
标签: sql reporting-services dataset ssrs-2008 ssrs-2012