【问题标题】:SQL Report Builder IIF Expression inside SWITCHSWITCH 中的 SQL Report Builder IIF 表达式
【发布时间】:2016-02-02 14:16:27
【问题描述】:

我正在尝试在我们使用的现有表单上编辑表达式。当前有问题的字段只有一个简单的 =SWITCH 表达式。我想添加一个嵌套在 SWITCH 或任何其他方式中的附加表达式,它将检查来自同一 DataSet1 的附加字段值,并根据现有文本下方的商品打印出附加的 TOS 信息。目前,表达式如下所示:

=SWITCH(First(Fields!Origin_country, "DataSet1") = "USA",
"***PRINTS US VERSION OF TERMS OF SERVICE AGREEMENT***"
& vbCrLf & 
"More text goes here...",

--Need to add nested expression to check a different field value  from dataset 1.

First(Fields!Origin_Country, "DataSet1") = "CAN",
"***PRINTS CDN VERSION OF T.O.S***"
& vbCrLf &
"More text goes here..."


--Need to add nested expression to check a different field value  from dataset 1.

)  -- Closing bracket from =SWITCH

我尝试在现有 =Switch 中添加其他字段值,但出现错误: “Paragraphs[0].TextRuns[0]' 包含错误:[BC30201] 预期表达式。” 尝试在 =SWITCH 中添加 IIF 语句,但我得到了这个错误: “文本框'textbox28'的值表达式直接引用字段'cmd_code'而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。”

我要检查的字段值包括 9 个商品代码,我可以将其减少到 2 个,如 LIKE "PRO*" 和 LIKE "SEAFOO*" (农产品和海鲜)。它们都属于生产商品,因此它们都将在现有 T.O.S 下方打印出相同的 True 结果; 1 与美国 T.O.S 和其他加拿大...

谢谢!

【问题讨论】:

    标签: regex ssrs-2008-r2 reportbuilder3.0


    【解决方案1】:

    This 我可以看出你的代码有一个太多的逗号。

    =SWITCH(First(Fields!Origin_country, "DataSet1") = "USA",
    "***PRINTS US VERSION OF TERMS OF SERVICE AGREEMENT***",
    & vbCrLf & 
    "More text goes here...",
    

    应该在哪里

    =SWITCH(First(Fields!Origin_country, "DataSet1") = "USA",
    "***PRINTS US VERSION OF TERMS OF SERVICE AGREEMENT***" (take this comma off)
    & vbCrLf & 
    "More text goes here...",
    First(Fields!Origin_Country, "DataSet1") = "CAN",
    "***PRINTS CDN VERSION OF T.O.S***" (Take Comma Off)
    & vbCrLf &
    "More text goes here..."
    

    另一种选择是设置字符串以在 sql 查询中打印服务条款并将其拉入数据集中,这样您就可以说

    IIF First(Fields!Origin_Country, "DataSet1") = "CAN", Fields!USATOS.Value...
    

    【讨论】:

    • 嘿,对不起,那些逗号是我在这篇文章中的错误,它们不在原来的表达中。
    • 嗯..我在添加的附加换行符之后确实有一个额外的逗号...删除了 & vbCrLf & 之后和 IIF 语句之前的逗号,它起作用了!现在唯一的问题是表单被稍微向左推,所以文本框的左边框被切断了......哈哈
    【解决方案2】:

    所以我并没有那么远,newGuy 指出它可能只是一个放错位置的逗号,它就是(在 IIF 语句之前有一个逗号)

    表达式现在看起来像这样并且它起作用了。文本字段位置的小问题,但我通过将边距移动几个像素来解决这个问题。

    =SWITCH(First(Fields!Origin_country, "DataSet1") like "USA",
    "***USA Version of TOS****"
    & vbCrLf & "More text Here"
    &vbCrLf &    /*Had a comma on this line i had to remove... */
    IIF(First(Fields!cmd_code.value, "DataSet1") like "PRO*", "USA PRODUCE TEXT",
     IIF(First(Fields!cmd_code.value, "DataSet1") like "SEAFOO*", "USA PRODUCE TEXT", " " )
         ),
    
    First(Fields!Origin_country, "DataSet1") like "CAN",
    "***CANADIAN Version of TOS****"
    & vbCrLf & "More text Here"
    &vbCrLf &
    IIF(First(Fields!cmd_code.value, "DataSet1") like "PRO*", "CDN PRODUCE TEXT",
      IIF(First(Fields!cmd_code.value, "DataSet1") like "SEAFOO*", "CDN PRODUCE TEXT", " " )
      )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-22
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      相关资源
      最近更新 更多