我有一个SSRS表达式:
=IIF(
Fields!CUT.Value.ToString().Length > 1
,IIF(
Fields!CUT.Value.ToString().Contains(","),
Fields!CUT.Value.ToString().Substring(0, Fields!CUT.Value.ToString().IndexOf(",")),
Fields!CUT.Value.ToString()
)
,""
)
翻译
如果该字段包含,
,请将该字段的substring
从第一个位置转到,
所在的位置。如果该字段不包含,
,请告诉我整个字段。
万阿英,蒋达清:
我在没有COMMA的所有页面中得到#Error
。如果有COMMA,它会按预期工作。其中一个字段,值为4
。在不同的方案中,值为17/64" Corrugated
。我得到了这两个错误。
我尝试了什么:
我尝试过几种不同的方法:
使用LIKE
代替Contains
=IIF(
IsNothing(Fields!CUT.Value)
,""
,IIF(
Fields!CUT.Value LIKE "*,*",
Mid(Fields!CUT.Value, InStr(Fields!CUT.Value, ",") + 1, (LEN(Fields!CUT.Value) - InStr(Fields!CUT.Value, ",") - 1))
Fields!CUT.Value
)
)
我在dataset
添加了一个新字段,用,
替换XXXX
。我想,也许SSRS无法理解我在谈论,
作为字符串的一部分。然后更改查询以查看其中是否有XXXX
。仍然有相同的#Error
删除.data
文件,清理项目并重建项目。因为,这显然不是不正确的。所以我想也许不是在看报告的最新版本。
似乎什么都没做!我真的很接近做坏事!这件事让我疯了。
问题:
,
,请在,
之前提供所有内容。如果没有,请给我一切。 编辑1:
值得注意的是,在另一个领域,我正在做一些非常类似的事情:
IIF(
IsNothing(Fields!CUT.Value)
,""
,IIF(
Fields!CUT.Value LIKE "*,*"
," | Length: " & Mid(Fields!CUT.Value, InStr(Fields!CUT.Value, ",") + 1, (LEN(Fields!CUT.Value) - InStr(Fields!CUT.Value, ",") - 1))
,""
)
)
这样做是,如果同一字段中有,
,请在,
之后获取所有内容并将其附加到| Length:
。如果没有,
,则只显示空格""
。这完全没问题。在存在,
并且没有,
的情况下。所以我得出结论,微软正在使用SSRS让我发疯。
答案 0 :(得分:1)
您可以使用SWITCH执行此操作并首先测试没有逗号,但是假设您只想让字符串的第一部分达到逗号的位置,则有一种更简单的方法。
这只使用split函数并获取第一个元素。
=(Split(Fields!CUT.Value, ",")).GetValue(0)
美好而简单:)