【问题标题】:IF statement for last value in LookupSet expressionLookupSet 表达式中最后一个值的 IF 语句
【发布时间】:2018-11-06 14:44:24
【问题描述】:

我有一个表达式来获取最后一个日期值,但如果没有输入日期,我会得到“#Error”。 (IF 部分返回 #Error,因为没有输入日期 - Else 部分返回日期)。这是表达式:

IIF(LookupSet(Fields!Denial_ID.Value,Fields!Denial_ID.Value,Fields!Appeal_Date_Entered.Value,"DataSet2").Length() =0, "", LookupSet(Fields!Denial_ID.Value, Fields!Denial_ID.Value, Fields!Appeal_Date_Entered.Value, "DataSet2")(LookupSet(Fields!Denial_ID.Value, Fields!Denial_ID.Value, Fields!Appeal_Date_Entered.Value, "DataSet2").Length() -1))

【问题讨论】:

  • 请在标签中指定您要询问的语言并格式化表达式以使其可读。我什至看不到任何Else,也无法真正帮助您正确格式化,因为语法似乎没有任何意义:看起来您有一些额外/缺失的括号
  • 对不起 - 我对写表达式很陌生。这是我在报表生成器中使用的表达式。该表达式正在工作,如果已输入日期,将返回 a 日期,但如果未输入日期,则会出现 #Error
  • 那是什么语言?这是来自 Excel 吗?您是在谈论 Microsoft SQL Server 报表生成器吗?请描述您的环境。
  • 是的,Microsoft Report Builder v3.0
  • 有没有报告作者可以提供帮助?我已经看到帖子说明这是 IF 语句的一个已知问题。没有输入日期时没有得到“#Error”的正确语法是什么?

标签: arrays reporting-services reportbuilder3.0


【解决方案1】:

我绝对不是报告作者,但你的表达中有一些奇怪的东西让我觉得它不起作用。下面是它的格式化版本(虽然我不知道 MRB 中的空格语法,但更容易分析它):

IIF(
  LookupSet(Fields!Denial_ID.Value,
    Fields!Denial_ID.Value,
    Fields!Appeal_Date_Entered.Value,"DataSet2").Length() =0,
  "",
  LookupSet(Fields!Denial_ID.Value,
    Fields!Denial_ID.Value,
    Fields!Appeal_Date_Entered.Value, "DataSet2")
  (LookupSet(Fields!Denial_ID.Value,
    Fields!Denial_ID.Value,
    Fields!Appeal_Date_Entered.Value,
    "DataSet2").Length() -1)
)

根据docsIIF 语法如下:

=IIF(condition, valueIfTrue, valueIfFalse)

但你的表情是这样的:

IIF(condition, valueIfTrue, valueIfFalse (someOtherStuff))

因此您应该描述您希望从该表达式中获得什么,并将其更改为符合标准语法(另请参见参考页面上的示例)。

【讨论】:

  • 我试图显示的上诉日期值可能有 0 到 3 个值,我试图获取最后输入的值。如果输入了日期,则表达式能够成功检索该值。但是,当没有输入日期时,即出现#Error。翻阅其他帖子,相信在使用IIF时,因为第一个结果没有值,所以返回错误。我似乎有一些帖子建议在表达式中使用 MID、Split、JOIN,但我似乎无法使语法正确。
最近更新 更多