0

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

我在使用 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}) 

任何帮助深表感谢。

谢谢

4

2 回答 2

1

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

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

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

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

于 2013-03-15T17:08:05.280 回答
0

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

=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")

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

于 2013-03-15T15:16:32.600 回答