PowerApps の Update および UpdateIf 関数Update and UpdateIf functions in PowerApps

データ ソース内のレコードを更新します。Updates records in a data source.


Update 関数Update function

データ ソースのレコード全体を置換するときには、Update 関数を使用します。Use the Update function to replace an entire record in a data source. これに対して、UpdateIf 関数と Patch 関数は、レコード内の一定の値だけを変更し、残りの値をそのまま維持するものです。In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

コレクションの場合には、レコード全体が一致している必要があります。For a collection, the entire record must match. コレクションではレコードの重複が許可されているため、複数のレコードが一致することがあります。Collections allow duplicate records, so multiple records might match. レコードのコピー全部を更新する場合には、All 引数を使用します。この引数を使用しなかった場合には、レコードのコピーが 1 つだけ更新されます。You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

データ ソースによって列の値が自動で生成されている場合には、そのの値を再確認する必要があります。If the data source generates a column's value automatically, the value of that column must be reaffirmed.

UpdateIf 関数UpdateIf function

一定の条件に合致するレコードの値を変更するときには、UpdateIf 関数を使用します。Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. 条件には、結果が true または false になるものであれば、どのような数式でも指定できます。また、データ ソースの列を名前で参照することもできます。The condition can be any formula that results in a true or false and can reference columns of the data source by name. この関数では、各レコードについて条件が評価され、評価結果が true のレコードがあれば変更されます。The function evaluates the condition for each record and modifies any record for which the result is true.

変更内容の指定には変更レコードを使用して、そこにプロパティの新しい値を指定します。To specify a modification, use a change record that contains new property values. この変更レコードを中かっこを使ってインラインで指定した場合には、プロパティの数式が変更対象のレコードのプロパティを参照できるようになります。If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. 数式に基づいてレコードを変更する場合には、この動作を使用します。You can use this behavior to modify records based on a formula.

特定の列だけを変更し、他の列はそのまま維持する場合には、UpdateIf のほかに Patch 関数も使用できます。Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

UpdateUpdateIf のどちらも、変更後のデータ ソースをテーブルとして返します。Both Update and UpdateIf return the modified data source as a table. 動作の数式では、どちらかの関数を使用する必要があります。You must use either function in a behavior formula.


これらの関数は、データ ソースに対して使用した場合、委任できません。When used with a data source, these functions can't be delegated. データ ソースの先頭の部分のみが取得され、関数が適用されます。Only the first portion of the data source will be retrieved and then the function applied. 結果は完全でない場合があります。The result may not represent the complete story. 作成時に、この制限について通知し、可能であれば委任可能な代替関数への切り替えを提案する青い点が表示されます。A blue dot will appear at authoring time to remind you of this limitation and to suggest switching to delegable alternatives where possible. 詳細については、委任の概要に関する記事を参照してください。For more information, see the delegation overview.


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

  • DataSource – 必須。DataSource – Required. 置換の対象となるレコードが含まれるデータ ソース。The data source that contains the record that you want to replace.
  • OldRecord – 必須。OldRecord – Required. 置換の対象となるレコード。The record to replace.
  • NewRecord – 必須。NewRecord – Required. 置換後のレコード。The replacement record. これは、変更レコードとは異なるものです。This isn't a change record. この NewRecord で置換されるのはレコード全体であり、不足しているプロパティがある場合には、その値が "空白" になります。The entire record is replaced, and missing properties will contain blank.
  • All – 省略可能。All – Optional. コレクションでは、同じレコードが複数存在することがあります。In a collection, the same record may appear more than once. レコードのコピーをすべて削除する場合には、All 引数を指定します。Specify the All argument to remove all copies of the record.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – 必須。DataSource – Required. 変更の対象となるレコードが含まれるデータ ソース。The data source that contains the record or records that you want to modify.
  • Condition(s) – 必須。Condition(s) – Required. 変更の対象となるレコードについて評価結果が true となる数式。A formula that evaluates to true for the record or records that you want to modify. 数式では、DataSource の列名を使用できます。You can use column names of DataSource in the formula.
  • ChangeRecord(s) - 必須。ChangeRecord(s) - Required. 条件別にプロパティの新しい値を指定した変更レコード。この変更レコードで指定された値が、条件を満たした DataSource のレコードに適用されます。For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. 中かっこを使ってレコードをインラインで指定した場合には、そのプロパティの数式で既存のレコードのプロパティの値を使用できます。If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.


ここで紹介する例では、IceCream という名前のデータ ソースのレコードを置換したり、変更したりしていきます。このデータ ソースには以下のテーブルが存在し、初期データが次のようになっています。In these examples, you'll replace or modify records in a data source that's named IceCream and that starts with the data in this table:

数式Formula 説明Description 結果Result
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
データ ソースのレコードを 1 つ置換します。Replaces a record from the data source.

IceCream データ ソースの内容が変更されました。The IceCream data source has been modified.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Quantity の値が 150 よりも大きなレコードを対象として変更を実施します。Modifies records that have a Quantity that is greater than 150. Quantity フィールドの値を 10 増やします。他のフィールドは変更しません。The Quantity field is incremented by 10, and no other fields are modified.

IceCream データ ソースの内容が変更されました。The IceCream data source has been modified.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
データ ソースのレコードを 1 つ置換します。Replaces a record from the data source. 置換レコードで Quantity プロパティが指定されていないため、結果ではこのプロパティが "空白" になります。The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

IceCream データ ソースの内容が変更されました。The IceCream data source has been modified.
UpdateIf( IceCream, true, { Quantity: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) データ ソース内の全レコードについて、Quantity プロパティの値を 0 に設定します。Sets the value of the Quantity property for all records in the data source to 0.

IceCream データ ソースの内容が変更されました。The IceCream data source has been modified.

ステップ バイ ステップStep by step

  1. Inventory という名前のコレクションをインポートまたは作成し、ギャラリーにデータを表示する方法に関するページの手順に従って、コレクションをギャラリーに表示します。Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.

  2. ギャラリーの名前として ProductGallery を指定します。Name the gallery ProductGallery.

  3. UnitsSold という名前のスライダーを追加し、Max プロパティを次の数式に設定します。Add a slider named UnitsSold, and set its Max property to this expression:

  4. ボタンを追加し、OnSelect プロパティを次の数式に設定します。Add a button, and set its OnSelect property to this formula:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. F5 キーを押し、ギャラリーで製品を選択して、スライダーで目的の値を指定したら、ボタンを推します。Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    指定した製品の在庫数が、指定した量だけ減少します。The number of units in stock for the product you specified decreases by the amount that you specified.