Update 與 UpdateIf 函式
適用於: 畫布應用程式 模型導向應用程式
Description
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 且開頭為此資料表資料的資料來源記錄進行取代或修改︰
公式 | 描述 | 結果 |
---|---|---|
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。 | IceCream 資料來源已修改。 |
按步就班
匯入或建立名為 Inventory 的集合物件,並如在資源庫中顯示資料 所述,將該集合物件顯示在資源庫中。
將資源庫命名為 ProductGallery。
新增名為 UnitsSold 的滑桿,並將其 Max 屬性設定為下列運算式︰
ProductGallery.Selected.UnitsInStock新增一個按鈕,並將其 OnSelect 屬性設為此公式:
UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})按 F5 鍵,選取資源庫中的產品,使用滑桿指定值,然後選取按鈕。
您所指定之產品庫存單位數會減去您指定的數量。