Update 和 UpdateIf 函数

适用于:画布应用模型驱动应用

更新数据源中的记录

Description

Update 函数

使用 Update 函数可替换数据源中的整个记录, 而使用 UpdateIfPatch 函数则可修改记录中的一个或多个值,对其他值不作处理。

对于集合来说,整个记录必须匹配。 集合允许重复记录,因此可能会匹配多个记录。 可使用 RemoveFlags.All 参数来更新记录的所有副本;否则仅更新记录的一个副本。

如果数据源自动生成列的值,则该的值必须再次进行确认。

UpdateIf 函数

使用 UpdateIf 函数可以在一个或多个记录中修改一个或多个值,而这些记录则与一个或多个条件匹配。 条件可以是其结果为 truefalse 的任意公式,并且可以通过名称引用数据源的列。 函数会评估每个记录的条件,并修改结果为 true 的任何记录。

若要指定某个修改,请使用包含新的属性值的更改记录。 如果使用大括号以内联方式提供此更改记录,则属性公式可以引用要修改的记录的属性。 可以通过此行为根据公式修改记录。

就像使用 UpdateIf 一样,也可使用 Patch 函数更改记录的特定列,而不影响其他列。

UpdateUpdateIf 都以的形式返回修改的数据源。 必须在行为公式中使用任一函数。

代理

与数据源一起使用时,无法委派这些函数。 将仅检索数据源的第一部分,然后应用该函数。 这并不能代表整个过程。 创作时可能会出现警告,以提醒您存在此限制。

委派支持

只有部分数据源支持 UpdateIf。 如果数据源不支持此功能,Power Apps 将向服务器发送查询,并检索符合筛选表达式的所有数据,最大值为 500 或 2000 或者数据页面大小。 然后,它将更新那些记录并将每一条记录发送回要更新的服务器。

语法

Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )

  • DataSource – 必需。 数据源,其中包含要替换的记录。
  • OldRecord – 必需。 要替换的记录。
  • NewRecord – 必需。 替换记录。 这不是更改记录。 将替换整个记录,缺失的属性将包含空白
  • RemoveFlags.All – 可选。 在集合中,同一记录可能出现多次。 指定 RemoveFlags.All 参数以更新记录的所有副本。

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – 必需。 数据源,其中包含要修改的一个或多个记录。
  • Condition(s) – 必需。 一个公式,对于一个或多个需修改的记录,该公式的求值结果为 true。 可以在公式中使用 DataSource 的列名。
  • ChangeRecord(s) - 必需。 对于每个相应的条件,将对符合条件的 DataSource 记录应用新属性值的更改记录。 如果使用大括号以内联方式提供记录,则可在属性公式中使用现有记录的属性值。

示例

在以下示例中,您将替换或修改某个数据源中的记录,该数据源名为 IceCream 且以下表中的数据开头:

IceCream 示例。

公式 描述 结果
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
替换数据源中的某条记录。 替换记录。

修改了 IceCream 数据源。
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) 修改其 Quantity 大于 175 的记录。 Quantity 字段按 10 递增,其他字段不进行修改。 修改记录。

修改了 IceCream 数据源。
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
替换数据源中的某条记录。 替换记录中未提供 Quantity 属性,因此在结果中该属性将为空白 未提供数量时替换记录。

修改了 IceCream 数据源。
UpdateIf( IceCream, true, { Quantity: 0 } ) 将数据源中所有记录的 Quantity 属性的值设置为 0。 将所有的数量设置为 0。

修改了 IceCream 数据源。

分步操作

  1. 导入或创建名为 Inventory 的集合,让其显示在库中,如在库中显示数据所述。

  2. 将库命名为 ProductGallery

  3. 添加名为 UnitsSold 的滑块,将其 Max 属性设置为以下表达式:
    ProductGallery.Selected.UnitsInStock

  4. 添加一个按钮,然后将其 OnSelect 属性设置为以下公式:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. 按 F5,在库中选择一个产品,使用滑块指定一个值,然后选择该按钮。

    所指定产品的库存单元数下降指定的数量。