Power Apps 中的 Collect、Clear 和 ClearCollect 函数

创建和清除集合,以及将记录添加到任意数据源

描述

Collect

Collect 函数将记录添加到数据源。 可添加的项包括:

  • 单个值:该值置于新记录的 Value 字段中。 所有其他属性保留为 blank
  • 记录:每个命名属性都置于新记录的对应属性中。 所有其他属性保留为空白。
  • :如上所述,表中的每条记录将作为数据源的单个记录添加。 表不是以嵌套表形式添加到记录。 为实现此目的,需首先将表整合到记录中。

当用于集合时,将根据需要创建额外的。 该数据源将固定其他数据源的列,且无法添加新列。

如果数据源尚不存在,则会创建一个集合。

集合有时可用于保留全局变量或作为数据源的临时副本。 画布应用以公式为基础,这些公式会在用户与应用交互时自动重新计算。 集合不具有此优势,并且使用这些集合可能会让应用更加难以进行创建和理解。 以此方式使用集合前,请查看使用变量

还可使用 Patch 函数在数据源中创建记录。

Collect 以表格形式返回修改后的数据源。 Collect 只能在行为公式中使用。

Clear

Clear 函数删除集合的所有记录。 集合的列将保留。

请注意,Clear 仅对集合执行运算,而不包括其他数据源。 鉴于此,可以使用 RemoveIf( DataSource, true )。 此函数将删除数据源存储中的所有记录并影响其他用户,请谨慎使用。

可使用 Remove 函数选择性地删除记录。

Clear 没有返回值。 只能在行为公式中使用。

ClearCollect

ClearCollect 函数删除集合中的所有记录。 然后将不同的记录集添加到同一集合。 单个函数 ClearCollect 可提供 ClearCollect 的组合功能。

ClearCollect 以表形式返回修改后的集合。 ClearCollect 只能在行为公式中使用。

代理

与数据源一起使用时,无法委派这些函数。 将仅检索数据源的第一部分,然后应用该函数。 结果并不能代表整个过程。 创作时可能会显示一条警告,以提醒您有此限制,并建议尽可能切换到可委派的替代项。 有关详细信息,请参阅委派概述

语法

Collect( DataSource, Item, ... )

  • DataSource – 必需。 要向其添加数据的数据源。 如果尚不存在,将创建一个新的集合。
  • Item(s) - 必需。 要添加到数据源的一个或多个记录或表。

Clear( Collection )

  • Collection – 必需。 要清除的集合。

ClearCollect( Collection, Item, ... )

  • Collection – 必需。 要清除然后向其添加数据的集合。
  • Item(s) - 必需。 要添加到数据源的一个或多个记录或表。

示例

清除并将记录添加到数据源

在以下示例中,将擦除名为 IceCream 的集合并向其进行添加。 数据源以下列内容开始:

示例数据源。

公式 描述 结果
ClearCollect( IceCream, { Flavor: "Strawberry", Quantity: 300 } ) 清除 IceCream 集合中的所有数据,然后添加包含草莓冰淇淋数量的记录。 包含一个记录的表。

IceCream 集合也已修改。
Collect( IceCream, { Flavor: "Pistachio", Quantity: 40 }, { Flavor: "Orange", Quantity: 200 } ) IceCream 集合添加两条记录,其中包括开心果味冰淇淋和橙子味冰淇淋的数量。 包含两个记录的表。

IceCream 集合也已修改。
Clear( IceCream ) 删除 IceCream 集合中的所有记录。 空表。

IceCream 集合也已修改。

有关如何创建集合的分步示例,请参阅创建和更新集合

记录和表

这些示例检查如何处理 CollectClearCollect 的记录和表参数。

公式 描述 结果
ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100 }, { Flavor: "Vanilla", Quantity: 200 } ) 清除所有数据,然后将两条记录添加到包含一定数量的巧克力和香草冰淇淋的 IceCream 集合中。 要添加的记录作为函数的各个参数提供。 添加到集合的巧克力和香草记录。

IceCream 集合也已修改。
ClearCollect( IceCream, Table( { Flavor: "Chocolate", Quantity: 100 }, { Flavor: "Vanilla", Quantity: 200 } ) ) 除将记录合并到表中并通过单个参数传递外,与前面的示例相同。 表的内容先按记录逐条提取,然后再添加到 IceCream 集合中。 Chocolate 和 Vanilla 记录添加到集合中并进行了修改。

IceCream 集合也已修改。
ClearCollect( IceCream,
{ MyFavorites: Table( { Flavor: "Chocolate", Quantity: 100 }, { Flavor: "Vanilla", Quantity: 200 } ) } )
除了将表整合在记录中外,与前面的示例相同。 不会提取表的记录,而是将整个表添加为记录的一个单元。 Chocolate 和 Vanilla 记录添加到集合中,使用在记录中打包的表进行了修改。

IceCream 集合也已修改。

备注

您能告诉我们您的文档语言首选项吗? 进行简短调查。(请注意,此调查是英文版调查)

此调查大约需要七分钟。 不会收集个人数据(隐私声明)。