更新資料來源中的記錄

說明

Update 函式

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

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

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

UpdateIf 函式

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

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

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

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

委派

這些函式搭配資料來源使用時無法委派。 系統將只擷取資料來源的第一個部分,然後套用函式。 結果可能無法代表全貌。 編寫階段時會以藍點提醒您這項限制,並建議在可能的情況下切換為可委派的替代項目。 如需詳細資訊,請參閱委派概觀

語法

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

  • DataSource – 必要項目。 包含您要取代之記錄的資料來源。

  • OldRecord – 必要項目。 要取代的記錄。

  • NewRecord – 必要項目。 取代記錄。 這不是變更記錄。 系統會取代整筆記錄,遺漏的屬性會包含「空白」。

  • All – 選擇性項目。 在集合中,相同的記錄可能出現多次。 指定 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 大於 150 的記錄。 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 資料來源已修改。

逐步解說

  1. 匯入或建立名為 Inventory 的集合,並如在資源庫中顯示資料所述,將該集合顯示在資源庫中。

  2. 將資源庫命名為 ProductGallery

  3. 新增名為 UnitsSold 的滑桿,並將其 Max 屬性設定為下列運算式︰
    ProductGallery.Selected.UnitsInStock

  4. 新增一個按鈕,並將其 OnSelect 屬性設為此公式:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. 按 F5 鍵,選取資源庫中的產品,利用滑桿指定值,然後選取按鈕。

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