【问题标题】:SSRS Multiple Dataset ErrorsSSRS 多数据集错误
【发布时间】:2017-02-17 09:47:33
【问题描述】:

我有一个简单的 SSRS 报告,它显示一个表中的数据。我想要做的是在下拉列表中显示一个与该表不同的列表,供用户选择。如果我只使用一个数据集,我可以让它显示,但它会多次显示列中的值。

例子

Bob
Bob
Bob
Cathy
Cathy

如果我创建第二个数据集来列出不同的值,我会收到以下错误消息:

本地报告处理过程中发生错误。报告的定义无效。报表“正文”的变量表达式直接引用该字段,而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。

我正在尝试遵循我在此处找到的示例: http://msdn.microsoft.com/en-us/library/aa337400.aspx

第二个数据集仅用于参数列表。我不明白为什么它会导致实际报告出现问题。

【问题讨论】:

    标签: ssrs-2008 reporting-services


    【解决方案1】:

    如果没有报表定义,就无法准确判断在哪里,但是报表上有一个项目正在引用字段或数据集,并且隐式使用报表中存在的唯一数据集,但现在不知道哪个数据集使用一次以上添加到报告中。

    例如,当您创建一个表时,您可以设置一个与之关联的数据集。如果未设置且只有一个数据集,则无关紧要,因为它将采用唯一可用的数据集。添加新数据集后,表格不知道要使用哪个数据集,您将收到您所看到的错误。

    另一种获取错误的方法是在表达式中指定一个字段,例如在报告中某处的文本框中,未指定范围;只需将范围设置为特定的数据集,例如如果你有:

    =Count(Fields!name.Value)
    

    将其更改为:

    =Count(Fields!name.Value, "DatasetToUse")
    

    如果您只有一个数据集,则使用唯一可用的第一个表达式可以正常运行,但是一旦添加另一个,它将不知道要使用哪个,并且会出错。

    【讨论】:

    • 我的所有字段都是 =(Fields!item.Value, "DataSet1") 我根本没有在报告中使用任何聚合。此外,如果我删除报告中对第二个数据集的任何引用,它仍然不会运行。对于报表定义,您需要 XML 吗?
    • 如果表达式在 Tablix 中,请删除范围引用并在 Tablix 级别设置数据集。如果表达式不在 Tablix 中,请确保它是聚合函数,例如First() 或 Count() 范围设置为适当的数据集。
    • 我在周末做了一些工作,当我在 SQL 2008(以前是 R2)中重建报告时,它工作得很好。您能想到 2008 R2 SSRS 中的任何内容与原版 2008 有什么不同吗?
    • 不,我怀疑发生的事情是,当你重建它时,有些东西已经不同了,足以防止错误发生。对于这些情况(即一些我无法轻易看到的随机错误),我通常会复制报告并开始删除项目直到它起作用 - 然后重新添加项目直到我确切地看到导致它的原因。无论如何,很高兴它对你有用!
    • 我也是,我会给你答案。感谢您的帮助!
    【解决方案2】:

    在查询 (SQL) 中,您应该在开头添加 DISTINCT 子句,这样,每个值只会获得一条记录。查看http://www.w3schools.com/sql/sql_distinct.asp

    【讨论】:

      【解决方案3】:

      双击包含该字段的数据集。 转到左侧的字段并删除该字段。 通过单击添加 -> 查询字段来添加新字段。 只需在字段名称和字段来源下输入新字段的名称即可。

      当您通过从数据集字段列表选项卡中选择“计算字段”而不是“查询字段”来添加字段时会发生这种情况。

      干杯, 艾哈迈德·拉蒂夫

      【讨论】:

        猜你喜欢
        • 2014-07-13
        • 1970-01-01
        • 1970-01-01
        • 2019-02-03
        • 1970-01-01
        • 2017-12-17
        • 1970-01-01
        • 2017-03-16
        • 1970-01-01
        相关资源
        最近更新 更多