Update 與 UpdateIf 函式

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

更新 資料來源 中的 記錄

Description

Update 函式

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

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

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

UpdateIf 函式

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

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

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

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

委派

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

委派支援 (實驗性)

對於支援 UpdateIf 和 RemoveIf 的資料來源,委派支援現在處於實驗性預覽 (預設關閉) 狀態。 如果資料來源不支援此功能,現在 Power Apps 會將查詢傳送至伺服器,並擷取符合篩選運算式的所有資料,最大為 500、2000 或資料頁面大小。 然後,它會更新這些記錄,並將每個記錄傳送回伺服器進行更新。

語法

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

  • DataSource – 必要項目。 包含您要取代記錄的資料來源。
  • OldRecord – 必要項目。 要取代的記錄。
  • NewRecord – 必要項目。 取代記錄。 這不是變更記錄。 系統會取代整筆記錄,遺漏的屬性會包含 空白
  • RemoveFlags.All – 選用。 在集合中,相同的記錄可能出現多次。 指定 RemoveFlags.All 引數以更新記錄的所有複本。

UpdateIf (DataSourceCondition1ChangeRecord1 [,Condition2ChangeRecord2,...])

  • 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 鍵,選取資源庫中的產品,使用滑桿指定值,然後選取按鈕。

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