条件为 true 时返回一个值,条件为 false 时返回另一个值。

说明

If 函数会一直测试条件,直至找到 true 结果。 然后对应的值会作为结果返回。 可使用 If 基于比较和其他测试返回不同结果。

可在行为公式中将 If 用作两个操作之间的分支。 最多能执行一次分支。 将按顺序计算条件,且在找到 true 结果后不再进一步检查条件。

如果没有条件满足,并且提供了奇数个参数,则将返回最后一个参数的值。 对于 If( Condition, Value, Else ),这是常见情况。 如果提供了偶数个参数,则将返回空白。

语法

If( Condition, Result [, ElseResult ] )
If( Condition1, Result1 [, Condition2, Result2, ... [ , ElseResult ] ] )

  • Condition(s) - 必需。 测试 true 的公式。 这些公式通常包含比较运算符(如 <>=)和测试函数(如 IsBlankIsEmpty)。
  • Result(s) - 必需。 对计算结果为 true 的条件返回的对应值。
  • ElseResult - 可选。 没有条件满足时返回的值。 如果未指定此参数,则将返回空白。

示例

公式中的值

在以下示例中,名为 Slider1 的滑块控件的值为 25

公式 说明 结果
If( Slider1.Value = 25, "Result1" ) 条件为 true,并返回相应结果。 “Result1”
If( Slider1.Value > 1000, "Result1" ) 条件为 false,且未提供 *ElseResult*。 空白
If( Slider1.Value = 25, "Result1", "Result2" ) 条件为 true,并返回相应结果。 “Result1”
If( Slider1.Value > 1000, "Result1", "Result2" ) 条件为 false,且提供了 *ElseResult*,并返回结果。 “Result2”
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) 第一个条件为 true,并返回相应结果。 第二个条件也为 true,但未返回其对应值,因为它在参数列表中出现于第一个条件之后。 “Result1”
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) 第一个条件为 false,因为滑块的值为 25,而不是空白。 第二个条件为 true,因为滑块的值是数字,并返回相应结果。 “Result2”
If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") 第一个和第二个条件均为 false,且提供了 *ElseResult*,并返回结果。 “Result3”

在行为公式中分支

在以下示例中,名为“FirstName”的“文本输入”控件中包含键入到其中的值“John”。

公式 说明 结果
If( !IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) 条件为 true,并执行 Navigate 函数。 可使用 IsBlank 函数测试所需的窗体字段是否已填充。 如果文本输入框为空白,此公式不会产生任何影响。 true

显示更改为 Screen1
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) 没有 . 运算符,条件为 true,并且不执行 Navigate 函数。 因为已提供 *ElseResult*,因此将执行 Back 函数。 true

将重新显示之前显示的屏幕。

分步操作

  1. 在空屏幕上,添加“文本输入”控件,然后将它命名为“Text1”(如果默认名称不是此名称的话)。

  2. Text1 中,键入 15

  3. 添加一个标签,并将其 Text 属性设置为以下公式:

公式 说明 结果
Text1.Text 没有任何条件,返回值为输入文本控件的值。 “15”
If( Value(Text1.Text) < 40, "Order more!", Text1.Text ) 条件为 true,并返回相应值。 “Order more!”
If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text ) 第一个条件为 true,并返回相应值。 “Order MANY more!”