SQL SWITCH 内的 Report Builder IIF 表达式

SQL Report Builder IIF Expression inside SWITCH

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

=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]’ contains an error: [BC30201] Expression expected." 尝试在 =SWITCH 中添加一个 IIF 语句,但我得到了这个错误: "The Value expression for the text box ‘textbox28’ refers directly to the field ‘cmd_code’ without specifying a dataset aggregate. When the report contains multiple datasets, field references outside of a data region must be contained within aggregate functions which specify a dataset scope. "

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

谢谢!

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...

所以我并没有那么远,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", " " )
  )
)