Funkcia Patch v Power Apps

Upravuje alebo vytvára jeden alebo viacero záznamov v zdroji údajov alebo zlučuje záznamy mimo zdroja údajov.

Použite funkciu Patch na úpravu záznamov v zložitých situáciách. Napríklad pri aktualizáciách, ktoré nevyžadujú interakciu používateľa alebo nepoužívajú formuláre, ktoré pokrývajú viacero obrazoviek.

Ak chcete ľahšie aktualizovať záznamy v zdroji údajov pre jednoduché zmeny, použite namiesto toho ovládací prvok Upraviť formulár. Keď pridáte ovládací prvok Upraviť formulár, poskytnete používateľom formulár na vyplnenie a potom môžete uložiť zmeny do zdroja údajov. Ďalšie informácie nájdete v téme Vysvetlenie údajových formulárov.

Prehľad

Funkciu Patch môžete použiť na úpravu jedného alebo viacerých záznamov zdroja údajov. Hodnoty konkrétnych polí sa upravia bez ovplyvnenia ďalších vlastností. Tento vzorec napríklad zmení telefónne číslo zákazníka Contoso:

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

Na vytvorenie záznamov použite funkciu Patch s funkciou Defaults. Pomocou tohto správania zostavte jednu obrazovku na vytváranie a úpravu záznamov. Tento vzorec napríklad vytvorí záznam pre zákazníka Contoso:

Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )

Funkciu Patch môžete použiť na zlúčenie dvoch alebo viacerých záznamov aj vtedy, ak nepracujete so zdrojom údajov. Tento vzorec napríklad zlúči dva záznamy do jedného, ktorý identifikuje telefónne číslo aj polohu zákazníka Contoso:

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

Popis

Úprava alebo vytvorenie záznamu v zdroji údajov

Ak chcete túto funkciu použiť so zdrojom údajov, určte zdroj údajov a potom určte základný záznam:

  • Ak chcete záznam upraviť, základný záznam musí pochádzať zo zdroja údajov. Základný záznam môže pochádzať z vlastnosti Items ovládacieho prvku Galéria, môže byť umiestnený v kontextovej premennej alebo môže pochádzať z nejakej inej cesty. Základný záznam však dokážete vystopovať späť k zdroju údajov. Je to dôležité preto, že záznam bude obsahovať ďalšie informácie, ktoré mu pomôžu základný záznam znova nájsť na úpravy.
  • Ak chcete vytvoriť záznam, použite funkciu Defaults, aby ste vytvorili základný záznam s predvolenými hodnotami.

Potom určte jeden alebo viac záznamov zmien, z ktorých každý bude obsahovať nové hodnoty vlastnosti, ktoré hodnoty vlastnosti v základnom zázname prepíšu. Záznamy zmien sa spracovávajú v poradí od začiatku zoznamu argumentov do konca a neskoršie hodnoty vlastnosti prepisujú tie skoršie.

Vrátenou hodnotou funkcie Patch je záznam, ktorý ste upravili alebo vytvorili. Ak ste záznam vytvorili, vrátená hodnota môže obsahovať vlastnosti, ktoré zdroj údajov vygeneroval automaticky. Vrátená hodnota však neposkytuje hodnotu pre polia súvisiacej entity.

Napríklad používate Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"); a potom MyAccount.'Primary Contact'.'Full Name'. V tomto prípade nemôžete uviesť celé meno. Namiesto toho na prístup do polí súvisiacej entity použite samostatné vyhľadávanie, napríklad:

LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'

Keď zdroj údajov aktualizujete, môžu sa vyskytnúť problémy. Ak chcete problémy identifikovať a skontrolovať, použite funkciu Errors podľa témy o práci so zdrojmi údajov.

Medzi súvisiace funkcie patrí funkcia Aktualizovať na nahradenie celého záznamu, a funkcia Collect na vytvorenie záznamu. Na úpravu konkrétnych vlastností v prípade viacerých záznamov na základe podmienky použite funkciu UpdateIf.

Úprava alebo vytvorenie množiny záznamov v zdroji údajov

Funkciu Patch môžete tiež použiť na vytvorenie alebo úpravu viacerých záznamov jedným volaním.

Namiesto odovzdania jedného základného záznamu je možné v druhom argumente poskytnúť tabuľku základných záznamov. Záznamy zmien sa tiež poskytujú v tabuľke, aby identicky zodpovedali základným záznamov. Počet záznamov v každej tabuľke zmien musí byť rovnaký ako počet záznamov v základnej tabuľke.

Keď funkciu Patch používate týmto spôsobom, vrátená hodnota je tiež tabuľkou, v ktorej každý záznam identicky zodpovedá základným záznamom a záznamom zmien.

Zlúčenie záznamov mimo zdroja údajov

Určte dva alebo viac záznamov, ktoré chcete zlúčiť. Záznamy sa spracovávajú v poradí od začiatku zoznamu argumentov do konca a neskoršie hodnoty vlastnosti prepisujú tie skoršie.

Funkcia Patch vráti zlúčený záznam bez toho, aby zmenila jeho argumenty alebo záznamy v ktoromkoľvek zdroji údajov.

Syntax

Úprava alebo vytvorenie záznamu v zdroji údajov

PatchDataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])

  • DataSource – povinné. Zdroj údajov obsahujúci záznam, ktorý chcete upraviť, alebo zdroj údajov, ktorý bude záznam obsahovať, keď ho vytvoríte.
  • BaseRecord – povinné. Záznam, ktorý chcete upraviť alebo vytvoriť. Ak záznam pochádza zo zdroja údajov, bude nájdený a upravený. Ak sa použil výsledok funkcie Defaults, záznam sa vytvorí.
  • ChangeRecord(s) – povinné. Jeden alebo viac záznamov obsahujúcich vlastnosti, ktoré sa majú upraviť v zázname BaseRecord. Záznamy zmien sa spracovávajú v poradí od začiatku zoznamu argumentov do konca a neskoršie hodnoty vlastnosti prepisujú tie skoršie.

Úprava alebo vytvorenie množiny záznamov v zdroji údajov

PatchDataSource, BaseRecordsTable, ChangeRecordTable1 [, ChangeRecordTable2, … ] )

  • DataSource – povinné. Zdroj údajov obsahujúci záznamy, ktoré chcete upraviť, alebo zdroj údajov, ktorý bude záznamy obsahovať, keď ho vytvoríte.
  • BaseRecordTable – povinné. Záznamy, ktoré chcete upraviť alebo vytvoriť. Ak záznam pochádza zo zdroja údajov, bude nájdený a upravený. Ak sa použil výsledok funkcie Defaults, záznam sa vytvorí.
  • ChangeRecordTable(s) – povinné. Jedna alebo viac tabuliek záznamov obsahujúce vlastnosti, ktoré chcete v prípade každého záznamu tabuľky BaseRecordTable upraviť. Záznamy zmien sa spracovávajú v poradí od začiatku zoznamu argumentov do konca a neskoršie hodnoty vlastnosti prepisujú tie skoršie.

Zlúčenie záznamov

PatchRecord1, Record2 [, …] )

  • Record(s) – povinné. Aspoň dva záznamy, ktoré chcete zlúčiť. Záznamy sa spracúvajú v poradí od začiatku zoznamu argumentov do konca a neskoršie hodnoty vlastnosti prepisujú tie skoršie.

Príklady

Úprava alebo vytvorenie záznamu (v zdroji údajov)

V týchto príkladoch upravíte alebo vytvoríte záznam v zdroji údajov s názvom IceCream, ktorý obsahuje údaje z tejto tabuľky, a automaticky vygenerujete hodnoty v stĺpci ID:

Vzorec Popis Výsledok
Patch( IceCream,
First( Filter( IceCream, Flavor = "Chocolate" ) ), { Quantity: 400 } )
Upravenie záznamu v zdroji údajov s názvom IceCream:
  • Záznam, ktorý chcete upraviť, má v stĺpci ID hodnotu 1. (Je to záznam Chocolate.)
  • Hodnota v stĺpci Quantity sa zmení na 400.
{ ID: 1, Flavor: "Chocolate", Quantity: 400 }

Zmenila sa položka Chocolate v zdroji údajov IceCream.
Patch( IceCream, Defaults( IceCream ), { Flavor: "Strawberry" } ) Vytvorenie záznamu v zdroji údajov s názvom IceCream:
  • Stĺpec ID obsahuje hodnotu 3, ktorú zdroj údajov vygeneruje automaticky.
  • Stĺpec Quantity obsahuje hodnotu 0, čo je pre tento stĺpec v zdroji údajov IceCream predvolenou hodnotou, ktorú určuje funkcia Defaults.
  • Stĺpec Flavor obsahuje hodnotu Strawberry.
{ ID: 3, Flavor: "Strawberry", Quantity: 0 }

Vytvorila sa položka Strawberry v zdroji údajov IceCream.

Po vyhodnotení predchádzajúcich vzorcov vyzerajú hodnoty zdroja údajov takto:

Zlúčenie záznamov (mimo zdroja údajov)

Vzorec Popis Výsledok
Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) Zlúčenie dvoch záznamov mimo zdroja údajov:
  • Hodnoty v stĺpci Name (Názov) sa v prípade jednotlivých záznamov nezhodujú. Výsledok obsahuje hodnotu (Jim) v zázname, ktorý je bližšie ku koncu zoznamu argumentov namiesto hodnoty (James) v zázname, ktorý je bližšie k začiatku.
  • Prvý záznam obsahuje stĺpec (Score), ktorý v druhom zázname neexistuje. Výsledok obsahuje tento stĺpec s hodnotou (90).
  • Druhý záznam obsahuje stĺpec (Passed), ktorý v prvom zázname neexistuje. Výsledok obsahuje tento stĺpec s hodnotou (pravda).
{ Name: "Jim", Score: 90, Passed: true }