Funkcje Update i UpdateIf w usłudze PowerAppsUpdate and UpdateIf functions in PowerApps

Te funkcje umożliwiają aktualizowanie rekordów w źródle danych.Updates records in a data source.

OpisDescription

Funkcja UpdateUpdate function

Funkcja Update umożliwia zastąpienie całego rekordu w źródle danych.Use the Update function to replace an entire record in a data source. Z kolei funkcje UpdateIf i Patch umożliwiają zmodyfikowanie jednej lub wielu wartości w rekordzie, pozostawiając inne wartości bez zmian.In contrast, the UpdateIf and the Patch functions modify one or more values in a record, leaving the other values alone.

W przypadku kolekcji cały rekord musi pasować.For a collection, the entire record must match. Kolekcje obsługują zduplikowane rekordy, więc wiele rekordów może pasować.Collections allow duplicate records, so multiple records might match. Możesz użyć argumentu All, aby zaktualizować wszystkie kopie rekordu. W przeciwnym razie zostanie zaktualizowana tylko jedna kopia rekordu.You can use the All argument to update all copies of a record; otherwise, only one copy of the record is updated.

Jeśli źródło danych generuje wartość kolumny automatycznie, wartość tej kolumny należy potwierdzić.If the data source generates a column's value automatically, the value of that column must be reaffirmed.

Funkcja UpdateIfUpdateIf function

Użyj funkcji UpdateIf, aby zmodyfikować co najmniej jedną wartość w co najmniej jednym rekordzie zgodnym z co najmniej jednym warunkiem.Use the UpdateIf function to modify one or more values in one or more records that match one or more conditions. Warunek może być dowolną formułą dającą wynik true lub false i może przywoływać kolumny w źródle danych według nazwy.The condition can be any formula that results in a true or false and can reference columns of the data source by name. Funkcja oblicza warunek dla każdego rekordu i modyfikuje każdy rekord, dla którego wynik to true.The function evaluates the condition for each record and modifies any record for which the result is true.

Aby określić modyfikację, użyj rekordu zmiany zawierającego nowe wartości właściwości.To specify a modification, use a change record that contains new property values. Jeśli podasz rekord zmiany w postaci wbudowanej za pomocą nawiasów klamrowych, formuły właściwości mogą przywoływać właściwości modyfikowanego rekordu.If you provide this change record inline with curly braces, property formulas can reference properties of the record that's being modified. To zachowanie umożliwia modyfikowanie rekordów na podstawie formuły.You can use this behavior to modify records based on a formula.

Podobnie jak w przypadku funkcji UpdateIf, funkcji Patch można użyć do zmiany konkretnych kolumn rekordu bez wpływania na inne kolumny.Similar to UpdateIf, you can also use the Patch function to change specific columns of a record without affecting other columns.

Zarówno funkcja Update, jak i UpdateIf zwracają zmodyfikowane źródło danych w postaci tabeli.Both Update and UpdateIf return the modified data source as a table. Należy użyć jednej z tych funkcji w formule zachowania.You must use either function in a behavior formula.

DelegowanieDelegation

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.

SkładniaSyntax

Update( ŹródłoDanych, StaryRekord, NowyRekord [, All ] )Update( DataSource, OldRecord, NewRecord [, All ] )

  • ŹródłoDanych — wymagane.DataSource – Required. Źródło danych zawierające rekord, który ma zostać zastąpiony.The data source that contains the record that you want to replace.
  • StaryRekord — wartość wymagana.OldRecord – Required. Rekord, który ma zostać zastąpiony.The record to replace.
  • NowyRekord — wartość wymagana.NewRecord – Required. Rekord zastępujący.The replacement record. To nie jest rekord zmiany.This isn't a change record. Zastępowany jest cały rekord, a brakujące właściwości będą zawierać wartość pustą.The entire record is replaced, and missing properties will contain blank.
  • All — opcjonalne.All – Optional. W kolekcji ten sam rekord może występować więcej niż raz.In a collection, the same record may appear more than once. Należy podać argument All, aby usunąć wszystkie kopie rekordu.Specify the All argument to remove all copies of the record.

UpdateIf( ŹródłoDanych, Warunek1, RekordZmiany1 [, Warunek2, RekordZmiany2, ... ] )UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • ŹródłoDanych — wymagane.DataSource – Required. Źródło danych zawierające co najmniej jeden rekord, który ma zostać zmodyfikowany.The data source that contains the record or records that you want to modify.
  • Warunki — wymagane.Condition(s) – Required. Formuła, której obliczenie daje wartość true dla rekordu lub rekordów, które chcesz zmodyfikować.A formula that evaluates to true for the record or records that you want to modify. Możesz użyć nazw kolumn z tabeli ŹródłoDanych w formule.You can use column names of DataSource in the formula.
  • RekordZmiany — wymagana co najmniej jedna wartość.ChangeRecord(s) - Required. Dla każdego odpowiadającego warunku jest to rekord zmiany nowych wartości właściwości do zastosowania dla rekordów tabeli ŹródłoDanych, które spełniają warunek.For each corresponding condition, a change record of new property values to apply to records of DataSource that satisfy the condition. Jeśli rekord zostanie podany w postaci wbudowanej za pomocą nawiasów klamrowych, można użyć wartości właściwości istniejącego rekordu w formułach właściwości.If you provide the record inline using curly braces, property values of the existing record can be used in the property formulas.

PrzykładyExamples

W tych przykładach przedstawiono zastępowanie lub modyfikowanie rekordów w źródle danych o nazwie IceCream, którego początkowe dane przedstawia następująca tabela: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:

FormułaFormula OpisDescription WynikResult
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 } )
Zastępuje rekord ze źródła danych.Replaces a record from the data source.

Źródło danych IceCream zostało zmodyfikowane.The IceCream data source has been modified.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } )UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Modyfikuje rekordy, które mają wartość Quantity (Ilość) większą niż 150.Modifies records that have a Quantity that is greater than 150. Pole Quantity (Ilość) jest zwiększane o 10, a żadne inne pola nie są modyfikowane.The Quantity field is incremented by 10, and no other fields are modified.

Źródło danych IceCream zostało zmodyfikowane.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"} )
Zastępuje rekord ze źródła danych.Replaces a record from the data source. Właściwość Quantity (Ilość) nie została określona w rekordzie zastępującym, więc w wyniku ta właściwość będzie miała wartość pustą.The Quantity property hasn't been supplied in the replacement record, so that property will be blank in the result.

Źródło danych IceCream zostało zmodyfikowane.The IceCream data source has been modified.
UpdateIf( IceCream, true, { Quantity: 0 } )UpdateIf( IceCream, true, { Quantity: 0 } ) Ustawia wartość właściwości Quantity (Ilość) dla wszystkich rekordów w źródle danych na 0.Sets the value of the Quantity property for all records in the data source to 0.

Źródło danych IceCream zostało zmodyfikowane.The IceCream data source has been modified.

Krok po krokuStep by step

  1. Zaimportuj lub utwórz kolekcję o nazwie Inventory, a następnie wyświetl ją w galerii zgodnie z opisem w temacie dotyczącym wyświetlania danych w galerii.Import or create a collection named Inventory, and show it in a gallery as Show data in a gallery describes.
  2. Nadaj galerii nazwę ProductGallery.Name the gallery ProductGallery.
  3. Dodaj suwak o nazwie UnitsSold i ustaw dla jego właściwości Max następujące wyrażenie:Add a slider named UnitsSold, and set its Max property to this expression:
    ProductGallery.Selected.UnitsInStockProductGallery.Selected.UnitsInStock
  4. Dodaj przycisk i ustaw dla jego właściwości OnSelect następującą formułę: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. Naciśnij klawisz F5, wybierz produkt w galerii, określ wartość za pomocą suwaka, a następnie wybierz przycisk.Press F5, select a product in the gallery, specify a value with the slider, and then select the button.

    Liczba jednostek dla zapasu magazynowego produktu zostanie zmniejszona o określoną wartość.The number of units in stock for the product you specified decreases by the amount that you specified.