【问题标题】:An expression of non-boolean type specified in a context where a condition is expected, near ',' in ssrs 2008 r2在 ssrs 2008 r2 中的“,”附近预期条件的上下文中指定的非布尔类型的表达式
【发布时间】:2014-11-09 10:30:39
【问题描述】:

我收到错误消息“在预期条件的上下文中指定的非布尔类型的表达式,靠近 ','” 运行 ssrs 2008 r2 报告时。 数据集中嵌入的sql是:

IF @reportID <> 0
BEGIN
    SELECT 'Students report 1' AS selectRptName, 1 AS rptNumValue 
    UNION
    SELECT 'Students report 2', 2  
    UNION
    SELECT 'Students report 3', 3 
    UNION
    SELECT 'Students report 4', 4 
    UNION
    SELECT 'Students report 5', 5 
    ORDER BY selectRptName
END

当我声明 @reportID 时,sql 在管理工作室中运行良好。

我注释掉'IF @reportID &lt;&gt; 0',sql 运行良好。

@reportID 是传递给适用数据集的参数值。 @reportID 可以有多个值。

因此,您能告诉我 sql 和/或告诉我需要做什么来为我解决问题吗?

【问题讨论】:

  • @reportID 可以有多个值是什么意思?你的意思是它的多值参数吗?此外,您不能在 SSRS 查询构建器中使用 IF..ELSE 语句。
  • @reportID 可以有 0、1 或 200 个值。我正在考虑调用一个拆分参数值的函数。我将如何设置 sql?
  • @M.Ali SQL 有一个 IF 条件,它在 SSRS 数据集中运行良好。 msdn.microsoft.com/en-au/library/ms182717.aspx

标签: tsql reporting-services ssrs-2008-r2


【解决方案1】:

为了检查多值参数的值,您需要使用IN 运算符。

IF 0 NOT IN (@reportID)

但在我看来,您正在尝试检查已为多值参数分配了多少值,而您实际上无法直接在 SQL 查询中执行此操作。

在您的数据集属性中,转到“参数”部分并​​添加一个新参数,该参数的值由表达式设置。然后使用此表达式将该参数设置为多值参数中的项目数:

=Parameters!reportID.Count

然后您可以在 SQL 中使用该参数来检查分配给多值参数的值的数量。

有关 SSRS 中的参数集合的更多信息,请参阅此 MSDN 页面:Parameters Collection References (Report Builder and SSRS)

【讨论】:

  • 将代码更改为:IF 0 not in (@reportID)
猜你喜欢
  • 2018-03-03
  • 2018-03-03
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多