opomba,
Dostop do te strani zahteva pooblastilo. Poskusite se vpisati alispremeniti imenike.
Dostop do te strani zahteva pooblastilo. Poskusite lahko spremeniti imenike.
Velja za: Aplikacije Canvas Copilot
Studio
Desktop tokovi
Modelno vodene aplikacije
Power Platform CLI
Dataverse funkcije
Spremeni ali ustvari enega ali več zapisov v viru podatkov ali združi zapise zunaj vira podatkov.
S funkcijo Patch lahko spremenite zapise v zapletenih situacijah, na primer pri posodobitvah, ki ne zahtevajo interakcije uporabnika ali uporabljajo obrazce, ki se raztezajo čez več zaslonov.
Za lažje posodabljanje zapisov v viru podatkov za enostavne spremembe uporabite kontrolnik Edit form. Ko dodate kontrolnik Edit form, uporabnikom zagotovite obrazec, ki ga izpolnijo, in nato shranite spremembe v vir podatkov. Če želite več informacij, glejte Razumevanje podatkovnih obrazcev.
Oglejte si ta videoposnetek in se naučite uporabljati Patch funkcijo:
Pregled
S funkcijo Patch spremenite enega ali več zapisov vira podatkov. Vrednosti določenih polj so spremenjene, ne da bi vplivale na druge lastnosti. Ta formula na primer spremeni telefonsko številko za stranko z imenom Contoso:
Patch( Customers, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )
Uporabite Patch s funkcijo »Privzeto«, če želite ustvariti zapise. To delovanje uporabite za razvoj enega zaslona za ustvarjanje in za urejanje zapisov. Ta formula na primer ustvari zapis za stranko z imenom Contoso:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
opomba,
Ko popravite zbirko z zapisom iz vira podatkov s privzetimi vrednostmi, postopek popravka posodobi zbirko z določenimi vrednostmi popravkov in privzetimi vrednostmi iz vira podatkov. Če želite ustvariti nov zapis, se morata vir DataSource izjave popravka in Vir podatkov funkcije Defaults ujemati.
Tudi če ne delate z virom podatkov, lahko spojite Patch dva ali več zapisov. Ta formula na primer združi dva zapisa v enega, ki določa tako telefonsko številko kot lokacijo za stranko Contoso:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Opis
Spreminjanje ali ustvarjanje zapisa v viru podatkov
Če želite uporabljati to funkcijo z virom podatkov, navedite vir podatkov in nato še osnovni zapis:
- Če želite spremeniti zapis, mora osnovni zapis izvirati iz vira podatkov. Osnovni zapis je morda prišel skozi lastnost Elementov galerije, je bil postavljen v kontekstno spremenljivko ali pa je prišel skozi drugo pot. Vendar pa lahko izsledite osnovni zapis nazaj v vir podatkov. To je pomembno, saj zapis vključuje dodatne informacije za ponovno iskanje zapisa za spreminjanje.
- Če želite ustvariti zapis, uporabite funkcijo Defaults in ustvarite osnovni zapis s privzetimi vrednostmi.
Nato določite enega ali več zapisov sprememb, pri čemer vsak vsebuje nove vrednosti lastnosti, ki preglasijo vrednosti lastnosti v osnovnem zapisu. Spremenjeni zapisi se obdelajo v vrstnem redu od začetka seznama argumentov do konca, pri čemer novejše vrednosti preglasijo starejše.
Vrnjena vrednost je zapis Patch , ki ste ga spremenili ali ustvarili. Če ste ustvarili zapis, lahko vrnjena vrednost vključuje lastnosti, ki jih je vir podatkov ustvaril samodejno. Vendar vrnjena vrednost ne zagotavlja vrednosti za polja povezane tabele.
Uporabite na primer Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name")); in nato MyAccount.'Primary Contact'.'Full Name'. V tem primeru ne morete vrniti polnega imena. Namesto tega za dostop do polj povezane tabele uporabite ločeno iskanje, na primer:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Ko posodobite vir podatkov, lahko pride do ene ali več težav. Uporabite »IfError« in »IsErrorPatch« z vrnjeno vrednostjo, da zaznate napake in se odzovete nanje, kot je opisano v opisu »Obravnavanje napak«. Uporabite lahko tudi funkcijo Errors za prepoznavanje in preučevanje težav, kot je opisano v članku Delo z viri podatkov.
Povezane funkcije vključujejo funkcijo Update za zamenjavo celotnega zapisa in funkcijo Collect za ustvarjanje zapisa. Uporabite funkcijo UpdateIf in spremenite določene lastnosti več zapisov glede na pogoj.
Spreminjanje ali ustvarjanje nabora zapisov v viru podatkov
Patch lahko uporabite tudi za ustvarjanje ali spreminjanje več zapisov z enim klicem.
Namesto posredovanja enega osnovnega zapisa je lahko v drugem argumentu navedena tabela osnovnih zapisov. Zapisi sprememb so prav tako navedeni v tabeli in se ujemajo z osnovnimi zapisi. Število zapisov v vsaki tabeli sprememb mora biti enako številu zapisov v osnovni tabeli.
Če jo Patch uporabljate na ta način, je vrnjena vrednost tudi tabela z vsakim zapisom, ki ustreza zapisu »ena za ena« z osnovo in spremeni zapise.
Združevanje zapisov zunaj vira podatkov
Določite dva ali več zapisov, ki jih želite združiti. Zapisi se obdelajo v vrstnem redu od začetka seznama argumentov do konca, pri čemer novejše vrednosti preglasijo starejše.
Patch vrne spojeni zapis in ne spremeni svojih argumentov ali zapisov v nobenih virih podatkov.
Sintaksa
Spreminjanje ali ustvarjanje zapisa v viru podatkov
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, ... ])
- DataSource – Zahtevano. Vir podatkov, ki vsebuje zapis, ki ga želite spremeniti, ali bo vseboval zapis, ki ga želite ustvariti.
- BaseRecord – Zahtevano. Zapis za spreminjanje ali ustvarjanje. Če je zapis pridobljen iz vira podatkov, je najden in spremenjen. Če se uporabi rezultat funkcije Defaults, se zapis ustvari. Če želite ustvariti nov zapis, se morata vir DataSource izjave popravka in Vir podatkov funkcije Defaults ujemati.
- ChangeRecords – Zahtevano. Eden ali več zapisov, ki vsebujejo lastnosti, ki jih je mogoče spremeniti v argumentu BaseRecord. Spremenjeni zapisi se obdelajo v vrstnem redu od začetka seznama argumentov do konca, pri čemer novejše vrednosti preglasijo starejše.
Spreminjanje ali ustvarjanje nabora zapisov v viru podatkov
Patch( DataSource, BaseRecordsTable, ChangeRecordTable1 [, ChangeRecordTable2, ... ] )
- DataSource – Zahtevano. Vir podatkov, ki vsebuje zapise, ki jih želite spremeniti, ali bo vseboval zapise, ki jih želite ustvariti.
- BaseRecordTable – Zahtevano. Tabela zapisov za spreminjanje ali ustvarjanje. Če je zapis pridobljen iz vira podatkov, je najden in spremenjen. Če se uporabi rezultat funkcije Defaults, se zapis ustvari. Če želite ustvariti nov zapis, se morata vir DataSource izjave popravka in Vir podatkov funkcije Defaults ujemati.
- ChangeRecordTables – Zahtevano. Ena ali več tabel zapisov, ki vsebujejo lastnosti, ki jih je mogoče spremeniti za vsak zapis argumenta BaseRecordTable. Spremenjeni zapisi se obdelajo v vrstnem redu od začetka seznama argumentov do konca, pri čemer novejše vrednosti preglasijo starejše.
Spajanje zapisov
Patch( Record1, Record2 [, ...] )
- Zapisi - Obvezno. Najmanj dva zapisa, ki ju želite združiti. Zapisi se obdelajo v vrstnem redu od začetka seznama argumentov do konca, pri čemer novejše vrednosti preglasijo starejše.
Primeri
Spreminjanje ali ustvarjanje zapisa (v viru podatkov)
V teh primerih boste spremenili ali ustvarili zapis v viru podatkov z imenom IceCream, ki vsebuje podatke v tej tabeli in samodejno ustvari vrednosti v stolpcu ID:
| Formula | Opis | Rezultat |
|---|---|---|
|
PatchNe, ne LookUp( IceCream, Flavor = "Chocolate"), { Quantity: 400 } ) |
Spremeni zapis v viru podatkov IceCream:
|
{ ID: 1, Flavor: "Chocolate", Quantity: 400 } Vnos Chocolate v viru podatkov IceCream je spremenjen. |
| Patch(IceCream, Defaults( IceCream ), { Okus: "Jagoda" } ) | Ustvari zapis v viru podatkov IceCream:
|
{ ID: 3, Okus: "Jagoda", Količina: 0 } Ustvarjen je vnos Strawberry v viru podatkov IceCream. |
Ko so prejšnje formule ovrednotene, se vir podatkov konča s temi vrednostmi:
Združevanje zapisov (zunaj vira podatkov)
| Formula | Opis | Rezultat |
|---|---|---|
| Patch( { Name: "James", Score: 90 }, { Name: "Jim", Passed: true } ) | Združi dva zapisa zunaj vira podatkov:
|
{ Name: "Jim", Score: 90, Passed: true } |
Uporaba možnosti Kot ali ThisRecord
Z uporabo ključne besede As ali ThisRecord v formuli se boste izognili dvoumnemu kontekstu vrednotenja.
V spodnjem primeru razmislite o prvem iskalnem pogoju v izjavi If.
(OrderID = A[@OrderID]) pričakuje se primerjava OrderId v obsegu iskanja z OrderId zbirke A v ForAll obseg. V tem primeru si verjetno želite, da bi bil A[@OrderId] razrešen kot lokalni parameter. Vendar je zapisano dvoumno.
Power Apps trenutno interpretira tako OrderId na levi strani kot A[@OrderId] na desni strani kot polje v obsegu iskanja. Zato bo funkcija iskanja vedno našla prvo vrstico v [dbo].[Orders1], ker je pogoj vedno resničen (da je OrderId vsake vrstice enak sebi).
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Uporaba možnosti As ali ThisRecord
Če je le mogoče, uporabite operator As ali ThisRecord za obrazložitev leve strani. Kot je priporočeno za zgornji scenarij.
Ko v vaši formuli uporabite več obsegov z operaterji ForAll, Filter inLookup za isti vir podatkov ali tabelo, lahko pridejo parametri obsega v spor z istim poljem. Zato je priporočljivo uporabiti operator As ali ThisRecord za razrešitev imena polja in preprečitev dvoumnosti.
Operator As lahko na primer uporabite za obrazložitev v spodnjem primeru.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]' As B,
B.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]' As C,
C.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Za isti namen pa lahko uporabite tudi ThisRecord.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Če želite izvedeti več o uporabi operatorjev As in ThisRecord, si preberite članek Operaterji.