将字段添加到SSRS 2008报表中的表达式中

时间:2013-03-15 14:56:08

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

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

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

  

“用于报告参数'Policies_Total'的值表达式   是指一个领域。字段不能在报表参数中使用   表述“。

这是我的表达:

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

支持从具有以下表达式的Crystal报表转换:

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

非常感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

  2. 选项'Allow null'值将接受空值

  3. 您可能遇到可能需要使用多个数据集,多个选择或查询对象的情况。根据我使用SSRS的经验,当您尝试使用用于确定事件或操作的数据集来引用用于显示数据的数据集时,它会发疯。 SSRS也会因为表达式越多而相对性越慢,所以做一个完整的报告除了表达式而不是使用RDL语言内置函数的强大功能并不值得恕我直言。

答案 1 :(得分:0)

对于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")

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