Funkce Patch v PowerAppsPatch function in PowerApps

Upravuje nebo vytváří jeden či více záznamů ve zdroji dat, nebo slučuje záznamy mimo zdroj dat.Modifies or creates one or more records in a data source, or merges records outside of a data source.

Funkci Patch můžete použít k úpravě záznamů ve složitých situacích, například když provádíte aktualizace, které nevyžadují zásah od uživatele, nebo když používáte formuláře pokrývající několik obrazovek.Use the Patch function to modify records in complex situations, such as when you perform updates that require no user interaction or use forms that span multiple screens.

V méně složitých situacích můžete k aktualizaci záznamů ve zdroji dat použít ovládací prvek Formulář pro úpravy.In less complex situations, you can use the Edit form control to update records in a data source more easily. Když ovládací prvek Formulář pro úpravy přidáte, poskytnete uživatelům formulář k vyplnění a potom změny můžete uložit do zdroje dat.When you add an Edit form control, you provide users with a form to fill in and then save the changes to a data source. Další informace najdete v tématu Principy datových formulářů.For more information, see Understand data forms.

PřehledOverview

Funkci Patch můžete použít k úpravě jednoho nebo více záznamů zdroje dat.Use the Patch function to modify one or more records of a data source. Hodnoty konkrétních polí se upraví bez ovlivnění dalších vlastností.The values of specific fields are modified without affecting other properties. Tento vzorec například změní telefonní číslo zákazníka Contoso:For example, this formula changes the phone number for a customer named Contoso:

Patch( Customers; First( Filter( Customers; Name = "Contoso" ) ); { Phone: „1-212-555-1234“ } )Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: “1-212-555-1234” } )

K vytvoření záznamů použijte funkci Patch s funkcí Defaults.Use Patch with the Defaults function to create records. Pomocí tohoto chování sestavte jednu obrazovku pro vytváření a úpravu záznamů.Use this behavior to build a single screen for both creating and editing records. Tento vzorec například vytvoří záznam pro zákazníka Contoso:For example, this formula creates a record for a customer named Contoso:

Patch( Customers; Defaults( Customer ); { Name: „Contoso“ } )Patch( Customers, Defaults( Customer ), { Name: “Contoso” } )

Funkci Patch můžete použít, i když nepracujete se zdrojem dat, a sloučit dva nebo více záznamů.Even if you're not working with a data source, you can use Patch to merge two or more records. Tento vzorec například sloučí dva záznamy do jednoho, který identifikuje jak telefonní číslo, tak i polohu zákazníka Contoso:For example, this formula merges two records into one that identifies both the phone number and the location for Contoso:

Patch( { Name: "Contoso"; Phone: „1-212-555-1234“ }; { Name: "Contoso"; Location: „Midtown“ } )Patch( { Name: "Contoso", Phone: “1-212-555-1234” }, { Name: "Contoso", Location: “Midtown” } )

PopisDescription

Úprava nebo vytvoření záznamu ve zdroji datModify or create a record in a data source

Pokud chcete tuto funkci použít se zdrojem dat, určete zdroj dat a potom určete základní záznam:To use this function with a data source, specify the data source, and then specify a base record:

  • Pokud chcete záznam upravit, základní záznam musí pocházet ze zdroje dat.To modify a record, the base record needs to have come from a data source. Základní záznam může pocházet z vlastnosti Items ovládacího prvku Galerie, může být umístěný v kontextové proměnné nebo může pocházet z nějaké jiné cesty.The base record may have come through a gallery's Items property, been placed in a context variable, or come through some other path. Měli byste však být schopni základní záznam vystopovat zpět ke zdroji dat.But you should be able to trace the base record back to the data source. Je to důležité proto, že záznam bude obsahovat další informace, které mu pomohou základní záznam znovu najít kvůli úpravám.This is important as the record will include additional information to help find the record again for modification.
  • Pokud chcete záznam vytvořit, použijte funkci Defaults, abyste vytvořili základní záznam s výchozími hodnotami.To create a record, use the Defaults function to create a base record with default values.

Potom určete jeden nebo více záznamů změn, z nichž každý bude obsahovat nové hodnoty vlastnosti, které hodnoty vlastnosti v základním záznamu přepíší.Then specify one or more change records, each of which contains new property values that override property values in the base record. Záznamy změn se zpracovávají v pořadí od začátku seznamu argumentů do konce a pozdější hodnoty vlastnosti přepisují ty dřívější.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Návratovou hodnotou funkce Patch je záznam, který jste upravili nebo vytvořili.The return value of Patch is the record that you modified or created. Pokud jste záznam vytvořili, návratová hodnota může obsahovat vlastnosti, které zdroj dat vygeneroval automaticky.If you created a record, the return value may include properties that the data source generated automatically.

Když zdroj dat aktualizujete, mohou se vyskytnout problémy.When you update a data source, one or more issues may arise. Pokud chcete problémy identifikovat a zkontrolovat, použijte podle tématu o práci se zdroji dat funkci Errors.Use the Errors function to identify and examine issues, as Working with Data Sources describes.

Mezi související funkce patří funkce Update, kterou můžete použít k nahrazení celého záznamu, a funkce Collect, kterou můžete použít k vytvoření záznamu.Related functions include the Update function, which you can use to replace an entire record, and the Collect function, which you can use to create a record. Pro úpravu konkrétních vlastností u více záznamů na základě podmínky můžete použít funkci UpdateIf.You can use the UpdateIf function to modify specific properties of multiple records based on a condition.

Úprava nebo vytvoření sady záznamů ve zdroji datModify or create a set of records in a data source

Funkci Patch můžete také použít k vytvoření nebo úpravě více záznamů jedním voláním.Patch can also be used to create or modify multiple records with a single call.

Místo předání jednoho základního záznamu je možné v druhém argumentu poskytnou tabulku základních záznamů.Instead of passing a single base record, a table of base records can be provided in the second argument. Záznamy změn se také poskytují v tabulce, aby identicky odpovídaly základním záznamům.Change records are provided in a table as well, corresponding one-for-one with the base records. Počet záznamů v každé tabulce změn musí být stejný jako počet záznamů v základní tabulce.The number of records in each change table must be the same as the number of records in the base table.

Když funkci Patch používáte tímto způsobem, návratová hodnota je také tabulkou, ve které každý záznam identicky odpovídá základním záznamům a záznamům změn.When using Patch in this manner, the return value is also a table with each record corresponding one-for-one with the base and change records.

Sloučení záznamů mimo zdroj datMerge records outside of a data source

Určete dva nebo více záznamů, které chcete sloučit.Specify two or more records that you want to merge. Záznamy se zpracovávají v pořadí od začátku seznamu argumentů do konce a pozdější hodnoty vlastnosti přepisují ty dřívější.Records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Funkce Patch vrátí sloučený záznam, aniž by změnila jeho argumenty nebo záznamy v kterémkoli zdroji dat.Patch returns the merged record and doesn't modify its arguments or records in any data sources.

SyntaxeSyntax

Úprava nebo vytvoření záznamu ve zdroji datModify or create a record in a data source

Patch( ZdrojDat; ZákladníZáznam; ZáznamZměny1 [; ZáznamZměny2; …Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])])

  • ZdrojDat – povinné.DataSource – Required. Zdroj dat obsahující záznam, který chcete upravit, nebo zdroj dat, který bude záznam obsahovat, jakmile ho vytvoříte.The data source that contains the record that you want to modify or will contain the record that you want to create.
  • ZákladníZáznam – povinné.BaseRecord – Required. Záznam, který chcete upravit nebo vytvořit.The record to modify or create. Pokud záznam pochází ze zdroje dat, bude nalezen a upraven.If the record came from a data source, the record is found and modified. Pokud se použil výsledek funkce Defaults, záznam se vytvoří.If the result of Defaults is used, a record is created.
  • ZáznamZměny (Záznam změny) – povinné.ChangeRecord(s) – Required. Jeden nebo více záznamů obsahující vlastnosti, které se mají upravit v záznamu ZákladníZáznam.One or more records that contain properties to modify in the BaseRecord. Záznamy změn se zpracovávají v pořadí od začátku seznamu argumentů do konce a pozdější hodnoty vlastnosti přepisují ty dřívější.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Úprava nebo vytvoření sady záznamů ve zdroji datModify or create a set of records in a data source

Patch( ZdrojDat; BaseRecordsTable; ChageRecordTable1; [; ChangeRecordTable2, …Patch( DataSource, BaseRecordsTable, ChageRecordTable1, [, ChangeRecordTable2, … ] )] )

  • ZdrojDat – povinné.DataSource – Required. Zdroj dat obsahující záznamy, které chcete upravit, nebo zdroj dat, který bude záznamy obsahovat, jakmile je vytvoříte.The data source that contains the records that you want to modify or will contain the records that you want to create.
  • TabulkaZákladníchZáznamů – povinné.BaseRecordTable – Required. Tabulka záznamů, které chcete upravit nebo vytvořit.A table of records to modify or create. Pokud záznam pochází ze zdroje dat, bude nalezen a upraven.If the record came from a data source, the record is found and modified. Pokud se použil výsledek funkce Defaults, záznam se vytvoří.If the result of Defaults is used, a record is created.
  • ChangeRecordTable(s) (Tabulka záznamů změn) – povinné.ChangeRecordTable(s) – Required. Jedna nebo více tabulek záznamů obsahující vlastnosti, které chcete u každého záznamu tabulky TabulkaZákladníchZáznamů upravit.One or more tables of records that contain properties to modify for each record of the BaseRecordTable. Záznamy změn se zpracovávají v pořadí od začátku seznamu argumentů do konce a pozdější hodnoty vlastnosti přepisují ty dřívější.Change records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

Sloučení záznamůMerge records

Patch( Záznam1; Záznam2 [; …] )Patch( Record1, Record2 [, …] )

  • Záznam – povinné.Record(s) - Required. Alespoň dva záznamy, které chcete sloučit.At least two records that you want to merge. Záznamy se zpracovávají v pořadí od začátku seznamu argumentů do konce a pozdější hodnoty vlastnosti přepisují ty dřívější.Records are processed in order from the beginning of the argument list to the end, with later property values overriding earlier ones.

PříkladyExamples

Úprava nebo vytvoření záznamu (ve zdroji dat)Modify or create a record (in a data source)

V těchto příkladech upravíte nebo vytvoříte záznam ve zdroji dat s názvem IceCream, který obsahuje data z této tabulky, a automaticky vygenerujete hodnoty ve sloupci ID:In these examples, you'll modify or create a record in a data source, named IceCream, that contains the data in this table and automatically generates the values in the ID column:

VzorecFormula PopisDescription VýsledekResult
Patch( IceCream;
First( Filter( IceCream; Flavor = "Chocolate" ) ); { Quantity: 400 } )
Patch( IceCream,
First( Filter( IceCream, Flavor = "Chocolate" ) ), { Quantity: 400 } )
Upravení záznamu ve zdroji dat s názvem IceCream:Modifies a record in the IceCream data source:
  • Záznam, který chcete upravit, má ve sloupci ID hodnotu 1.The ID column of the record to modify contains the value of 1. (Je to záznam Chocolate.)(The Chocolate record has that ID.)
  • Hodnota ve sloupci Quantity se změní na 400.The value in the Quantity column changes to 400.
{ ID: 1; Flavor: "Chocolate"; Quantity: 400 }{ ID: 1, Flavor: "Chocolate", Quantity: 400 }

Změnila se položka Chocolate ve zdroji dat IceCream.The Chocolate entry in the IceCream data source has been modified.
Patch( IceCream; Defaults( IceCream ); { Flavor: “Strawberry” } )Patch( IceCream, Defaults( IceCream ), { Flavor: “Strawberry” } ) Vytvoření záznamu ve zdroji dat s názvem IceCream:Creates a record in the IceCream data source:
  • Sloupec ID obsahuje hodnotu 3, kterou zdroj dat vygeneruje automaticky.The ID column contains the value 3, which the data source generates automatically.
  • Sloupec Quantity obsahuje hodnotu 0, což je pro tento sloupec ve zdroji dat IceCream výchozí hodnotou, kterou určuje funkce Defaults.The Quantity column contains 0, which is the default value for that column in the IceCream data source, as the Defaults function specifies.
  • Sloupec Flavor obsahuje hodnotu Strawberry.The Flavor column contains the value of Strawberry.
{ ID: 3; Flavor: “Strawberry”; Quantity: 0 }{ ID: 3, Flavor: “Strawberry”, Quantity: 0 }

Vytvořila se položka Strawberry ve zdroji dat IceCream.The Strawberry entry in the IceCream data source has been created.

Po vyhodnocení předchozích vzorců vypadají hodnoty zdroje dat takto:After the previous formulas have been evaluated, the data source ends with these values:

Sloučení záznamů (mimo zdroj dat)Merge records (outside of a data source)

VzorecFormula PopisDescription VýsledekResult
Patch( { Name: "James"; Score: 90 }; { Name: "Jim"; Passed: true } )Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) Sloučení dvou záznamů mimo zdroj dat:Merges two records outside of a data source:
  • Hodnoty ve sloupci Name (Jméno) se u jednotlivých záznamu neshodují.The values in the Name column of each record don't match. Výsledek obsahuje hodnotu (Jim) v záznamu, který je blíž ke konci seznamu argumentů místo hodnoty (James) v záznamu, který je blíž k začátku.The result contains the value (Jim) in the record that's closer to the end of the argument list instead of the value (James) in the record that's closer to the start.
  • První záznam obsahuje sloupec (Score), který ve druhém záznamu neexistuje.The first record contains a column (Score) that doesn't exist in the second record. Výsledek obsahuje tento sloupec s hodnotou (90).The result contains that column with its value (90).
  • Druhý záznam obsahuje sloupec (Passed), který v prvním záznamu neexistuje.The second record contains a column (Passed) that doesn't exist in the first record. Výsledek obsahuje tento sloupec s hodnotou (true).The result contains that column with its value (true).
{ Name: "Jim"; Score: 90; Passed: true }{ Name: "Jim", Score: 90, Passed: true }