当错误时评估SSRS表达

时间:2016-06-01 17:05:34

标签: sql-server-2008 reporting-services

在SSRS报告中,我有一个字段,其表达式采用“LastName,FirstName”格式的名称,如果它包含逗号(此部分始终有效),则将其放入“FirstInitial.LastName”。但是,如果字符串不包含逗号,则应该只打印字符串,而是显示“#Error”:

=IIF(InStr(Fields!EmployeeName.Value, ", ") > 0, Mid(Fields!EmployeeName.Value, Instr(Fields!EmployeeName.Value, " ") + 1, 1) & ". " & Mid(Fields!EmployeeName.Value, 1, Instr(Fields!EmployeeName.Value, ",") - 1), Fields!EmployeeName.Value)

奇怪的是,如果我将“true”逻辑更改为只打印字符串“contains comma”,则此表达式完全按预期工作 - “LastNameOnly”字符串生成“LastNameOnly”,其他字符打印“包含逗号“。所以看起来即使语句是错误的,它仍然通过“真实”逻辑运行字符串,尽管它没有被使用,并抛出错误。

我已经尝试将字符串修饰符放在if语句的true和false部分(并相应地调整评估语句)中,这似乎没有什么区别。

有没有人碰到这个/有解决方案?或者也许我错过了什么?提前谢谢!

使用SQL Server 2008,在Visual Studio 2013的BIDS扩展中进行开发

1 个答案:

答案 0 :(得分:0)

显然SSRS会评估真假情况,无论它将使用哪一种。解决这个问题的方法是使用VB自定义代码。这是一个链接,向您展示如何在SSRS中使用VB

http://dyslexicanaboko.blogspot.com/2012/11/ssrs-logical-flaws-of-iif.html

希望这有助于其他人!