Update 與 UpdateIf 函式

適用於: 畫布應用程式 模型導向應用程式

更新 資料來源 中的 記錄。

名描述

Update 函數

使用 Update 函式取代資料來源中的整筆記錄。 相反地,UpdateIf 和 Patch 函式會修改記錄中的一或多個值,但不更動其他值。

至於 集合物件,整筆記錄必須相符。 集合物件允許重複記錄,因此可能會有多筆記錄相符。 您可以使用 RemoveFlags.All 引數更新記錄的所有複本;否則系統只會更新一個記錄複本。

如果資料來源自動產生欄位值,該 欄位 值必須重新確認。

UpdateIf 函數

使用 UpdateIf 函式修改一或多筆符合一個或多個條件記錄的一個或多個值。 條件可以是任何產生 true 或 false 的公式,而且可依名稱參考資料來源的欄位。 此函式評估每筆記錄的條件,並修改其結果是 true 的任何記錄。

若要指定某項修改,請使用包含新屬性值的變更記錄。 如果您提供的這項內嵌變更記錄使用大括號,屬性公式可參考要修改記錄的屬性。 您可以使用這種行為修改以公式為基礎的記錄。

和 UpdateIf 類似,您也可以使用 Patch 函式變更記錄的特定欄位,而不影響其他欄位。

Update 和 UpdateIf 都會以 資料表 形式傳回已修改的資料來源。 您必須在 行為公式 中使用任一函式。

委派

搭配資料來源使用時,無法委派這些函式。 將僅擷取資料來源的第一個部分,然後再套用函數。 這不一定代表完整的全貌。 製作時可能會出現一則警告,提醒您注意此限制。

委派支援

只有部分數據源支援 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 鍵,選取資源庫中的產品,使用滑桿指定值,然後選取按鈕。

    您所指定之產品庫存單位數會減去您指定的數量。