适用于: 画布应用
模型驱动应用
Description
Update 函数
使用 Update 函数替换数据源中的整个记录。 相比之下,UpdateIfPatch 函数会修改记录中的一个或多个值,使其他值单独保留。
对于集合来说,整个记录必须匹配。 集合允许重复记录,因此可能会匹配多个记录。 可使用 RemoveFlags.All 参数来更新记录的所有副本;否则仅更新记录的一个副本。
如果数据源自动生成列的值,则该列的值必须再次进行确认。
UpdateIf 函数
使用该 UpdateIf 函数修改一个或多个匹配一个或多个条件的记录中的一个或多个值。 条件可以是其结果为 true 或 false 的任意公式,并且可以通过名称引用数据源的列。 函数会评估每个记录的条件,并修改结果为 true 的任何记录。
若要指定某个修改,请使用包含新的属性值的更改记录。 如果使用大括号以内联方式提供此更改记录,则属性公式可以引用要修改的记录的属性。 可以通过此行为根据公式修改记录。
同样 UpdateIf,还可以使用 Patch 函数更改记录的特定列,而不会影响其他列。
并将UpdateUpdateIf修改后的数据源作为表返回。 必须在行为公式中使用任一函数。
代理
这些函数不委托给数据源。 但是, UpdateIfRemoveIf 在本地工作,以模拟最多 500/2000 条记录的委派。 它们逐渐将记录降低到 500/2000 记录的非委派限制。 收集满足 If 条件的记录。 通常,最多收集 500/2000 条记录,然后按执行修改。 但是,如果现有的本地数据缓存较大,则可能会更新更多记录,因为该函数可能有权访问更多记录以供评估。 仅检索数据源的初始部分,然后应用该函数。 这可能不表示完整图片。 在创作期间可能会显示警告,提醒你此限制。
语法
Update(DataSource_,OldRecord,NewRecord [, RemoveFlags.All ] )
- DataSource – 必需。 数据源,其中包含要替换的记录。
- OldRecord – 必需。 要替换的记录。
- NewRecord – 必需。 替换记录。 这不是更改记录。 将替换整个记录,缺少的属性包含 空白。
- RemoveFlags.All – 可选。 在集合中,同一记录可能出现多次。 指定 RemoveFlags.All 参数以更新记录的所有副本。
UpdateIf(DataSource_, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] ]
- DataSource – 必需。 数据源,其中包含要修改的一个或多个记录。
- 条件 - 必需。 一个公式,对于一个或多个需修改的记录,该公式的求值结果为 true。 可以在公式中使用 DataSource 的列名。 如果传递了多个条件,则仅应用与计算结果为 true 的第一个条件相关的 ChangeRecord。
- ChangeRecord(s) - 必需。 对于每个相应的条件,将对符合条件的 DataSource 记录应用新属性值的更改记录。 如果使用大括号以内联方式提供记录,则可在属性公式中使用现有记录的属性值。
示例
在以下示例中,您将替换或修改某个数据源中的记录,该数据源名为 IceCream 且以下表中的数据开头:
| 公式 | Description | 结果 |
|---|---|---|
|
Update(IceCream, LookUp(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, LookUp(IceCream, Flavor=“草莓” ), { ID: 3, 味道: “草莓旋转”} ) |
替换数据源中的某条记录。 替换记录中未提供 Quantity 属性,因此在结果中该属性将为空白。 |
修改了 IceCream 数据源。 |
| UpdateIf(IceCream, true, { Quantity: 0 } ) | 将数据源中所有记录的 Quantity 属性的值设置为 0。 |
修改了 IceCream 数据源。 |
分步操作
导入或创建名为 Inventory 的集合,让其显示在库中,如在库中显示数据所述。
将库命名为 ProductGallery。
添加名为 UnitsSold 的滑块,将其 Max 属性设置为以下表达式:
ProductGallery.Selected.UnitsInStock添加一个按钮,然后将其 OnSelect 属性设置为以下公式:
UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})按 F5,在库中选择一个产品,使用滑块指定一个值,然后选择该按钮。
所指定产品的库存单元数下降指定的数量。