MID 函数默认不会返回“N/A”

问题描述 投票:0回答:1

我使用 INSTR 和 MID 函数的组合来搜索文本字段中的特定值,如果找到该值,我将返回此文本之后的所有内容,直到找到句点。 如果未找到特定值,我想返回“N/A”,但会获取 #Error 值。如果找到该值,它会正确显示,但我无法显示“N/A”;它总是返回#Error。我使用 INSTR 函数定义两个字段;一个显示找到该值的第一个位置,第二个显示周期所在的位置并在 MID 函数中使用这些值。我注意到,如果未找到该值,INSTR 函数将返回整数值 0,因此我编写了 MID 函数来检查该值是否为 0,如果是,则返回“N/A”;即,

IIF(Fields!Starting_Position_of_Text.Value=0, "N/A",
    MID(Fields!Comments.Value, 
        Fields!Starting_Position_of_Text.Value, 
        (Fields!Location_of_Period_in_Text.Value - Fields!Starting_Position_of_Text.Value)
       )
    )

。 如果文本值存在,则效果很好,但否则它会显示#Error 而不是“N/A”。

reporting-services ssrs-2008-r2
1个回答
0
投票

这个问题是因为 IIF 的两个部分每次都会被评估,即使结果从未显示。

我现在无法测试这个,但您需要测试

Starting_Position_of_Text
每个部分的
MID()
值,所以像这样..

IIF(Fields!Starting_Position_of_Text.Value=0, "N/A",
    MID(Fields!Comments.Value, 
        IIF(Fields!Starting_Position_of_Text.Value=0, 0, Fields!Starting_Position_of_Text.Value), 
        IIF(Fields!Starting_Position_of_Text.Value=0, 1, (Fields!Location_of_Period_in_Text.Value - Fields!Starting_Position_of_Text.Value))
       )
   )

因此,起始位置是 0,然后我们将 0 和 1 传递给 mid 函数来获取第一个字符,它是什么并不重要,因为它永远不会显示。

注意:这假设

Comments
字段始终至少有一个字符长。

© www.soinside.com 2019 - 2024. All rights reserved.