Blank、Coalesce、IsBlank 和 IsEmpty 函数
适用于:画布应用桌面流 Dataverse 公式列模型驱动应用 Power Pages Power Platform CLI
测试值是否为空白值,或测试表是否不包含任何记录,并能创建空白值。
概述
Blank 是“空值”或“未知值”的占位符。例如,如果用户未进行选择,Combo box 控件的 Selected 属性将为空白。 很多数据源可以存储和返回 NULL 值,此类值在 Power Apps 中表示为空白。
Power Apps 中任何属性的值或计算的值都可以是空白值。 例如,布尔型数据的值通常是:true 或 false。 不过除了这两个值以外,它还可以是指示状态未知的空白。 这跟 Microsoft Excel 很相似,Excel 工作表的单元格一开始可能是空白无内容,但是它可以包含 TRUE 或 FALSE(等等)。 您随时可以再次清除单元格中的内容,将其返回空白状态。
空字符串是指不包含任何字符的字符串。 Len 函数对于此类字符串返回零,它可以在公式中将其写为两个双引号,在 ""
之间不写入任何内容。 某些控件和数据源使用空字符串表示“无值”条件。 为了简化应用的创建,IsBlank 和 Coalesce 函数同时测试空白值或空字符串。
在 IsEmpty 函数的上下文中,空特定于不包含记录的表。 即使表只包含列名称,而不包含任何数据,它也是一个完整的表。 一个表刚开始可能是空表,但填入记录后,就不再是空表了;如果将其中的记录删除,那么它又会变成空表。
备注
我们正处于过渡时期。 到目前为止,空白还用于报告错误,因此无法将有效的“无值”与错误区分开。 为此,目前,只有本地集合支持存储空白值。 如果在设置>即将发布的功能>试验性下面打开公式级错误管理试验性功能,则您可以在其他数据源中存储空白值。 我们正在积极完成此功能,并完成空白值与错误的正确分离。
空白
适用于:画布应用模型驱动应用 Dataverse 公式列
Blank 函数返回空白值。 此函数可用于在支持 NULL 值的数据源中存储这些值,进而可以从字段中有效删除所有值。
IsBlank
适用于:画布应用模型驱动应用
IsBlank 函数测试空白值或空字符串。 测试包括空字符串,以简化应用的创建过程,因为某些数据源和控件在不存在任何值时会使用空字符串。 要专门测试空白值,请使用 if( Value = Blank(), ...
而不是 IsBlank。 IsBlank 函数将空表视为非空,应使用 IsEmpty 测试表。
为现有应用启用错误处理时,考虑将 IsBlank 替换为 IsBlankOrError 以保留现有应用行为。 在添加错误处理之前,空白值用于同时表示数据库中的空值和错误值。 错误处理将两个空白解释分开,这可能会改变继续使用 IsBlank 的现有应用的行为。
IsBlank 的返回值为布尔值 true 或 false。
Coalesce
适用于:画布应用模型驱动应用
Coalesce 函数按顺序对参数求值并返回第一个值(不是空白或空字符串)。 使用此函数将空白值或空字符串替换为其他值,但保留非空白和非空字符串值不变。 如果所有参数都是空白或空字符串,函数将返回 blank,这让 Coalesce 成为将空字符串转换为空白值的好方法。
Coalesce( value1, value2 )
是 If( Not IsBlank( value1 ), value1, Not IsBlank( value2 ), value2 )
的更简明的等效项,不需要对 value1 和 value2 求值两次。 如果没有“else”公式,If 函数将返回空白。
Coalesce 的所有参数必须是同一种类型;例如,不能将数字和文本字符串混合在一起。 Coalesce 的返回值属于这种常见类型。
IsEmpty
适用于:画布应用模型驱动应用
IsEmpty 函数用于测试表是否包含记录。 这个函数跟使用 CountRows 函数的效果相同,只不过它是检查表中的记录数是否为零。 可以结合使用 IsEmpty 和 Errors 函数,从而检查数据源错误。
IsEmpty 的返回值为布尔值 true 或 false。
语法
Blank()
Coalesce( Value1 [, Value2, ... ] )
- Value(s) – 必需。 要测试的值。 按顺序计算每个值,直到找到不是空白且不是空字符串的值。 不会计算这一点之后的值。
IsBlank( Value )
- Value – 必需。 要测试空白值或空字符串的值。
IsEmpty( Table )
- Table - 必需。 要测试是否包含记录的表。
示例
空白
备注
下面的示例暂只适用于本地集合。 如果在设置>即将发布的功能>试验性下面打开公式级错误管理试验性功能,则您可以在其他数据源中存储空白值。 我们正在积极完成此功能,并完成空白值与错误的分离。
从头开始创建应用,然后添加一个 Button 控件。
将该按钮的 OnSelect 属性设置为以下公式:
ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )
预览应用,单击或点击所添加的按钮,然后关闭预览。
在文件菜单上,单击或点击集合。
此时,Cities 集合显示,其中包含一条内容为“Seattle”和“Rainy”的记录:
单击或点击后退箭头,返回到默认工作区。
添加一个 Label 控件,然后将 Text 属性设置为以下公式:
IsBlank( First( Cities ).Weather )
此标签显示 false,因为 Weather 字段包含值 ("Rainy")。
添加第二个按钮,然后将 OnSelect 属性设置为以下公式:
Patch( Cities, First( Cities ), { Weather: Blank() } )
预览应用,单击或点击所添加的按钮,然后关闭预览。
Cities 集合中第一条记录的 Weather 字段被替换成空白值,删除了之前使用的“Rainy”。
此标签显示 true,因为 Weather 字段不再包含值。
Coalesce
公式 | 描述 | 结果 |
---|---|---|
Coalesce( Blank(), 1 ) | 测试从 Blank 函数返回的值,此函数始终返回空白值。 由于第一个参数为空白,因此继续对下一个参数求值,直至找到非空白值和非空字符串。 | 1 |
Coalesce( "", "2" ) | 测试第一个参数,它是一个空字符串。 由于第一个参数是空字符串,因此继续对下一个参数求值,直至找到非空白值和非空字符串。 | 2 |
Coalesce( Blank(), "", Blank(), "", "3", "4" ) | Coalesce 从参数列表的开头开始并按顺序评估各个参数,直至找到非空白值和非空字符串。 在本例中,前四个参数均返回空白或非空字符串,因此继续评估第五个参数。 第五个参数是非空白和非空字符串,因此计算在此处停止。 将返回第五个参数的值,并且不再对第六个参数求值。 | 3 |
Coalesce( "" ) | 测试第一个参数,它是一个空字符串。 因为第一个参数是一个空字符串,并且没有更多参数,所以函数返回空白。 | blank |
IsBlank
从头开始创建应用,然后添加一个文本输入控件,并将其命名为 FirstName。
添加一个标签,然后将其 Text 属性设置为以下公式:
If( IsBlank( FirstName.Text ), "First Name is a required field." )
文本输入控件的 Text 属性默认设置为 "Text input"。 因为此属性包含值,所以它不是空的,标签也不会显示任何消息。
从文本输入控件中删除所有字符(包括空格)。
由于 Text 属性不再包含任何字符,因此它是空字符串,IsBlank( FirstName.Text ) 将为 true。 现在就会显示“必填字段”这样的消息了。
若要了解如何使用其他工具执行验证,请参阅 Validate 函数和使用数据源。
其他示例:
公式 | 描述 | 结果 |
---|---|---|
IsBlank( Blank() ) | 测试从 Blank 函数返回的值,此函数始终返回空白值。 | true |
IsBlank( "" ) | 不包含任何字符的字符串。 | true |
IsBlank( "Hello" ) | 包含一个或多个字符的字符串。 | false |
IsBlank( AnyCollection ) | 由于存在集合,所以即使不包含任何记录,它的值也不是空值。 要检查是不是空集合,请使用 IsEmpty。 | false |
IsBlank( Mid( "Hello", 17, 2 ) ) | Mid 函数的起始字符超出了字符串的结束位置。 所以结果是空字符串。 | true |
IsBlank( If( false, false ) ) | 没有 ElseResult 的 If 函数。 由于条件的结果始终是 false,所以 If 函数始终返回空白。 | true |
IsEmpty
从头开始创建应用,然后添加一个 Button 控件。
将该按钮的 OnSelect 属性设置为以下公式:
Collect( IceCream, { Flavor: "Strawberry", Quantity: 300 }, { Flavor: "Chocolate", Quantity: 100 } )
预览应用,单击或点击所添加的按钮,然后关闭预览。
创建 IceCream 集合,其中包含以下数据:
其中有两条记录,所以它不是空集。 IsEmpty( IceCream ) 返回 false,CountRows( IceCream ) 返回 2。
添加第二个按钮,然后将 OnSelect 属性设置为以下公式:
Clear( IceCream )
预览应用,单击或点击第二个按钮,然后关闭预览。
这个集合现在变成了空集:
Clear 函数可删除集合中的所有记录,导致集合变成空集。 IsEmpty( IceCream ) 返回 true,CountRows( IceCream ) 返回 0。
还可以使用 IsEmpty 测试一个计算的表是不是空表,请参阅以下示例:
公式 | 描述 | 结果 |
---|---|---|
IsEmpty( [ 1, 2, 3 ] ) | 单列表包含三条记录,所以,它不是空表。 | false |
IsEmpty( [ ] ) | 单列表不包含任何记录,所以它是空表。 | true |
IsEmpty( Filter( [ 1, 2, 3 ], Value > 5 ) ) | 单列表不包含任何大于 5 的值。 筛选器没有筛选出任何记录,所以它是空表。 | true |