【发布时间】:2017-07-19 16:04:18
【问题描述】:
感谢您今天抽出宝贵时间帮助我。我正在尝试使用多个 if 语句来控制显示的值,具体取决于每个语句是否为真。所以现在我在下面有这个基本上是:
IIF(expression = NULL
, CompanyAddress
, IIF(Expression='TX'
, IIF(BOOL=TRUE
,CompanyAddress
, SWITCH(DEALER ADDRESSES))
,CompanyAddress)
)
我已经分别测试了每个单独的 IIF 语句,并且得到了我期望的结果。目前在第一个 IIF 语句中且 Expression = NULL 为 TRUE ,它只输出 #Error 而不是“Nothin” OR 在我的真实案例公司地址中。但如果 Expression = NULL 为 FAlSE,我会得到 companyAddress 或 Dealer 的正确输出。
=IIF(IsNothing(Fields!CoOppId.Value)
,("nothin")
, (IIF(Fields!Addr1.Value.Contains("TX")
, IIF(Fields!UDFCustProv.Value = 1
, Fields!Addr0.Value
, Switch(
Fields!UDFMake.Value.Contains("Chevy")
, "Knapp Chevrolet" + chr(10) + "PO box " + chr(10) + "Houston TX 77210"
, Fields!UDFMake.Value.contains("Ford")
, "Sterling McCall Ford" + chr(10) + "6445 Southwest Freeway" + chr(10) + "Houston TX 77074"
, Fields!UDFMake.Value.contains("International")
, "Pliler International" + chr(10) + "2016 S. Eastman Rd" + chr(10) + "Longview TX 75602"
, Fields!UDFMake.Value.contains("Freightliner")
, "Houston Freightliner, Inc" + chr(10) +"9550 North Loop East" + chr(10) + "Houston TX 77029"
, Fields!UDFMake.Value.contains("RAM")
, "Max Haik Dodge Chrysler Jeep" +chr(10)+ "11000 I-45 North Freeway" + chr(10) + "Houston TX 77037")),Fields!Addr0.Value)))
【问题讨论】:
-
试试这个答案:StackOverflow
-
该线程不走运
-
您说主 IIF 上的 ELSE 条件可以正常工作,那么您能否将其简化为单个顶级 IIF 并告诉我们这是否仍会产生错误?实际上,我现在看到您说您确实已经确认这可行。下一个问题,如果 CoOppId 为 NULL,那么该行中的其他字段是否也为 NULL?
-
不,我只是检查该字段是否为空,然后显示如果 CoOppId 为空则应填充的字段。
-
我认为丹尼尔说得有道理。当 CoOppId 为 Null 时,您的表达式中至少还有一个字段为 null,这就是 #Error 的原因。尝试在 SQL 代码中为其余的字符串字段使用
COALESCE(fieldname,''),或在数字字段中使用COALESCE(fieldname,0)。
标签: vba reporting-services ssrs-2008 iif