データ ソース内のレコードを更新します。

説明

Update 関数

データ ソースのレコード全体を置換するときには、Update 関数を使用します。 これに対して、UpdateIf 関数と Patch 関数は、レコード内の一定の値だけを変更し、残りの値をそのまま維持するものです。

コレクションの場合には、レコード全体が一致している必要があります。 コレクションではレコードの重複が許可されているため、複数のレコードが一致することがあります。 レコードのコピー全部を更新する場合には、All 引数を使用します。この引数を使用しなかった場合には、レコードのコピーが 1 つだけ更新されます。

データ ソースによって列の値が自動で生成されている場合には、そのの値を再確認する必要があります。

UpdateIf 関数

一定の条件に合致するレコードの値を変更するときには、UpdateIf 関数を使用します。 条件には、結果が true または false になるものであれば、どのような数式でも指定できます。また、データ ソースの列を名前で参照することもできます。 この関数では、各レコードについて条件が評価され、評価結果が true のレコードがあれば変更されます。

変更内容の指定には変更レコードを使用して、そこにプロパティの新しい値を指定します。 この変更レコードを中かっこを使ってインラインで指定した場合には、プロパティの数式が変更対象のレコードのプロパティを参照できるようになります。 数式に基づいてレコードを変更する場合には、この動作を使用します。

特定の列だけを変更し、他の列はそのまま維持する場合には、UpdateIf のほかに Patch 関数も使用できます。

UpdateUpdateIf のどちらも、変更後のデータ ソースをテーブルとして返します。 動作の数式では、どちらかの関数を使用する必要があります。

委任

これらの関数は、データ ソースに対して使用した場合、委任できません。 データ ソースの先頭の部分のみが取得され、関数が適用されます。 結果は完全でない場合があります。 作成時に、この制限について通知し、可能であれば委任可能な代替関数への切り替えを提案する青い点が表示されます。 詳細については、委任の概要に関する記事を参照してください。

構文

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

  • DataSource – 必須。 置換の対象となるレコードが含まれるデータ ソース。

  • OldRecord – 必須。 置換の対象となるレコード。

  • NewRecord – 必須。 置換後のレコード。 これは、変更レコードとは異なるものです。 この 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 } )
データ ソースのレコードを 1 つ置換します。

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"} )
データ ソースのレコードを 1 つ置換します。 置換レコードで 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 キーを押し、ギャラリーで製品を選択して、スライダーで目的の値を指定したら、ボタンを推します。

    指定した製品の在庫数が、指定した量だけ減少します。