ForAll 函数

已完成

您之前已经了解如何使用单一用途函数对表进行操作。 此类函数比较理想并且效果良好,但有时需要更大的灵活性或执行无法通过此类函数实现的操作。 此时可以使用ForAll函数。

ForAll函数评估适用于表中所有记录的公式。 此公式可以计算值和/或执行操作,比如修改数据或使用连接。

当前正在处理的记录字段可在公式中使用。 您可以像其他值那样使用名称进行引用。 您还可以引用整个应用程序中的控件属性和其他值。

例如,您可以使用 ForAll(CustomerOrders, Office365.SendEmail(Email, "谢谢", "您是一位优质客户" & FirstName)) 将向 CustomerOrders 表中的所有电子邮件地址发送单独的电子邮件。 电子邮件主题将为“谢谢”,正文将为“您是一位优质客户”,后接 FirstName 字段中存储的值。

本示例与Concat示例在两个重要方面存在差异。 首先,这将向 CustomerOrders 表中的每条记录发送一封电子邮件。 因此,如有 50 条记录,将发送 50 封不同的电子邮件。 在 Concat 示例中,仅向收件人行中的所有 50 个电子邮件地址发送一封电子邮件。 其次,本电子邮件还引用 CustomerOrders 表中的 FirstName 字段。 使用ForAll函数时,每条记录的所有字段均可使用。

ForAll 使用注意事项

ForAll可以实现许多操作,但开始构建公式时还需了解若干注意事项。

  • 此公式可以包含执行操作的函数,比如使用PatchCollect函数修改数据源的记录。

  • 您无法修改作为 ForAll 函数对象的表。 其中包括对表使用PatchCollect

  • 此公式可以调用连接方法。

  • 您可以使用 ; 运算符对每条记录执行多项操作。

  • 编写公式时,切记可按任意顺序处理记录,也可在可行时并行处理。 您可在表的最后一条记录之后处理第一条记录。 务必避免对依赖项进行排序。 出于本原因,无法在 ForAll 函数中使用SetUpdateContextClearClearCollect函数,因为可以轻松使用这些函数易保存可能受本效果影响的变量。 您可以使用 Collect,但未定义记录添加顺序。

  • ForAll 不可委派,这意味着如果与外部数据配合使用,它可能不会遍历您的所有记录。 您获得的结果可能并不全面。 您在编写公式时可能会看到一条警告,提醒您有此限制,并建议尽可能切换到可委派的替代项。 ForAll 适用于集合,但请注意它不可委派。 有关详细信息,请参阅委派概述

ForAll 函数的规则多于大部分 Power Apps 函数。 此外,有时无法使用 Set 和 UpdateContext 等函数,因此必须找到其他使用公式的方式。 通常对 ForAll 使用 Set 跟踪修改的记录数量,或捕获关于这些记录的信息。 您可能会发现,使用 Patch 更新跟踪相同数据的集合将得到相同的结果。

有关 ForAll 函数使用方法和规则的更多信息,请参阅 Power Apps 中的 ForAll 函数