【问题标题】:Adding Fields into an expression in an SSRS 2008 report将字段添加到 SSRS 2008 报告中的表达式中
【发布时间】:2013-03-04 08:25:45
【问题描述】:

提前感谢您抽出宝贵时间回答我的问题。

我在使用 SSRS 报告系统中的表达式时遇到问题。 我正在从报告中提供的数据集中添加必填字段,但是当我尝试预览报告时,我收到以下消息:

"用于报告参数‘Policies_Total’的值表达式 指一个领域。报表参数中不能使用字段 表达式。”

这是我的表达方式:

=IIF(Sum(Fields!policy_id.Value, "DataSet1") Is Null, 0, Count(Sum(Fields!policy_id.Value, "DataSet1")))

这应该是从具有以下表达式的水晶报表转换而来的:

If IsNull ({usp_rep_agent_cases;1.policy_id}) then
    0
Else
    Count ({usp_rep_agent_cases;1.policy_id}) 

非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: reporting-services ssrs-2008 field ssrs-expression


    【解决方案1】:

    我认为这可能很简单,即应该在大多数情况下创建字段之前将“参数”传递到 SSRS。如果此参数取决于首先选择的其他值的值,则您不能首先列出它,因为据我所知,该字段尚未填充。当您只是创建数据集并直接引用该字段时,您似乎正在尝试使用表达式从数据集中的字段中计算某些内容。因此,您可以选择其他一些选项,而不是尝试表达式:

    1. 在您的参数“可用值”的左侧窗格中选择“从查询中获取值”。您可以使用作为“数据集”的查询,值是不言自明的,标签是最终用户将看到的显示内容。

    2. “允许空值”选项将接受空值

    您可能会遇到需要使用多个数据集、多个选择或查询对象的情况。根据我使用 SSRS 的经验,当您尝试引用用于显示数据的数据集和用于确定事件或操作的数据集时,有时会很生气。 SSRS 也会使相对性变慢,因为您执行的表达式越多,只使用表达式就完成整个报告,而不是利用 RDL 语言的内置功能,恕我直言,这并不值得。

    【讨论】:

    • 我在 Ian Preston 的帮助下把它变成了一个简单的字段框,似乎已经解决了这个问题。感谢您的意见。
    【解决方案2】:

    对于 SSRS 表达式,您需要使用 IsNothing 进行 NULL 检查,例如:

    =IIF(
      IsNothing(Sum(Fields!policy_id.Value, "DataSet1"))
      , 0
      , Count(Sum(Fields!policy_id.Value, "DataSet1"))
    )
    

    事实上,整个表达方式似乎有点奇怪;你特别想用你的表达来实现什么?您只是想计算非空值吗?

    =Sum(IIf(IsNothing(Fields!policy_id.Value), 1, 0), "DataSet1")
    

    此外,您的错误似乎是在不允许参数引用字段时,这可能无法通过更改语法来解决;我认为这里需要更多关于您想要实现的目标的信息。

    【讨论】:

    • 不客气。如果您发现某个答案有帮助,请考虑投票和/或将其设置为已接受的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2023-03-20
    相关资源
    最近更新 更多