Pastaba.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti prisijungti arba pakeisti katalogus.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti pakeisti katalogus.
Taikoma: "Canvas apps
Copilot Studio Desktop
" srautus
modeliu pagrįstos programos
"Power Platform" CLI
"Dataverse" funkcijos
Modifikuoja arba sukuria vieną ar kelis įrašusduomenų šaltinyje arba sulieja įrašus ne duomenų šaltinyje.
Patch Naudokite šią funkciją norėdami modifikuoti įrašus sudėtingose situacijose, pvz., kai atliekate naujinimus, kuriems nereikia vartotojo sąveikos, arba naudokite formas, apimančias kelis ekranus.
Jei norite duomenų šaltinio įrašus atnaujinti lengviau, atlikdami paprastus keitimus, geriau naudokite formos redagavimo valdiklį. Kai įtraukiate formos redagavimo valdiklį, vartotojams suteikiate formą, kurią jie gali užpildyti, o tada įrašyti pakeitimus duomenų šaltinyje. Norėdami gauti daugiau informacijos, žr. Duomenų formų supratimas.
Peržiūrėkite šį vaizdo įrašą ir sužinokite, kaip naudoti Patch funkciją:
Apžvalga
Patch Naudokite funkciją norėdami modifikuoti vieną ar daugiau duomenų šaltinio įrašų. Konkrečių laukų reikšmės modifikuojamos nepaveikiant kitų ypatybių. Pavyzdžiui, ši formulė pakeičia kliento, kurio pavadinimas yra „Contoso“, telefono numerį:
Patch( Customers, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )
Naudokite Patch su funkcija Defaults įrašams kurti. Naudodami šį veikimo būdą, galite sukurti vieną ekraną įrašams tiek kurti, tiek redaguoti. Pavyzdžiui, ši formulė sukuria įrašą klientui, kurio pavadinimas yra „Contoso“:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Pastaba.
Kai pataisote rinkinį naudodami įrašą iš duomenų šaltinio su numatytosiomis reikšmėmis, pataisų operacija atnaujina rinkinį tiek nurodytomis pataisų reikšmėmis, tiek numatytosiomis reikšmėmis iš duomenų šaltinio. Norint sukurti naują įrašą, pataisų sakinio DataSource ir Funkcijos Defaults DataSource reikšmės turi sutapti.
Net jei nenaudojate duomenų šaltinio, galite sulieti Patch du ar daugiau įrašų. Pavyzdžiui, ši formulė du įrašus sulieja į vieną, kuriame identifikuojamas tiek „Contoso“ telefono numeris, tiek vietovė:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Aprašas
Įrašo modifikavimas arba sukūrimas duomenų šaltinyje
Norėdami šią funkciją naudoti su duomenų šaltiniu, nurodykite duomenų šaltinį, tada – pagrindinį įrašą:
- Norint modifikuoti įrašą, pagrindinis įrašas turi būti kilęs iš duomenų šaltinio. Pagrindinis įrašas galėjo būti per galerijos ypatybę Elementai , įdėtas į konteksto kintamąjį arba einantis kitu keliu. Tačiau pagrindinį įrašą galite atsekti iki duomenų šaltinio. Tai svarbu, nes įraše yra papildomos informacijos, padėsiančios dar kartą rasti įrašą modifikuoti.
- Norėdami sukurti įrašą, naudodami funkciją Defaults sukurkite pagrindinį įrašą su numatytosiomis reikšmėmis.
Tada nurodykite vieną ar daugiau pakeitimo įrašų; kiekviename iš jų yra naujų ypatybių reikšmių, kurios perrašo ypatybių reikšmes pagrindiniame įraše. Pakeitimo įrašai apdorojami eilės tvarka nuo argumentų sąrašo pradžios iki pabaigos, o vėlesnės ypatybių reikšmės perrašo ankstesniąsias.
Grąžinama reikšmė Patch yra įrašas, kurį modifikavote arba sukūrėte. Jei sukūrėte įrašą, grąžinamoje reikšmėje gali būti ypatybių, kurias automatiškai sugeneravo duomenų šaltinis. Tačiau grąžinama reikšmė nėra susijusios lentelės laukų reikšmė.
Pavyzdžiui, galite naudoti Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"));, o tada – MyAccount.'Primary Contact'.'Full Name'. Šiuo atveju negalite gauti vardo ir pavardės. Norėdami pasiekti susijusios lentelės laukus, naudokite atskirą peržvalgą, pvz.:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Kai atnaujinate duomenų šaltinį, gali kilti viena ar daugiau problemų. Naudokite IfError ir IsError su grąžinama reikšme, kad Patch aptiktumėte ir atsakytumėte į klaidas, kaip aprašyta klaidų apdorojimo aprašyme. Galite taip pat naudoti Klaidų funkciją, kad nustatytumėte ir ištirtumėte klaidas, kaip aprašo Darbas su duomenų šaltiniais skyrius.
Susijusios funkcijos yra funkcija Update, skirta visam įrašui pakeisti, ir funkcija Collect, skirta įrašui sukurti. Naudodami funkciją UpdateIf galite pagal sąlygą modifikuoti konkrečias kelių įrašų ypatybes.
Įrašų rinkinio modifikavimas arba sukūrimas duomenų šaltinyje
Patch taip pat gali būti naudojamas kuriant arba modifikuojant kelis įrašus vienu skambučiu.
Užuot perduodant vieną pagrindinį įrašą, antrame argumente gali būti pateikiama pagrindinių įrašų lentelė. Lentelėje taip pat pateikiami pakeitimo įrašai, atitinkantys kiekvieną pagrindinį įrašą. Kiekvienos pakeitimo lentelės įrašų skaičius turi būti toks pats, kaip pagrindinės lentelės įrašų skaičius.
Patch Naudojant tokiu būdu, grąžinama reikšmė taip pat yra lentelė, kurioje kiekvienas įrašas atitinka "vienas už vieną" su pagrindu ir keisti įrašus.
Įrašų suliejimas ne duomenų šaltinyje
Nurodykite du ar daugiau norimų sulieti įrašų. Įrašai apdorojami eilės tvarka nuo argumentų sąrašo pradžios iki pabaigos, o vėlesnės ypatybių reikšmės perrašo ankstesniąsias.
Patch grąžina sulietą įrašą ir nemodifikuoja jo argumentų ar įrašų jokiuose duomenų šaltiniuose.
Sintaksė
Įrašo modifikavimas arba sukūrimas duomenų šaltinyje
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, ... ])
- DataSource - būtina. Duomenų šaltinis, kuriame yra norimas modifikuoti įrašas arba bus įrašas, kurį norite sukurti.
- "BaseRecord " – būtina. Įrašas, kurį norite modifikuoti arba sukurti. Jei įrašas gautas iš duomenų šaltinio, įrašas randamas ir modifikuojamas. Jei naudojamas Defaults rezultatas , įrašas sukuriamas. Norint sukurti naują įrašą, pataisų sakinio DataSource ir Funkcijos Defaults DataSource reikšmės turi sutapti.
- "ChangeRecords " – būtina. Vienas ar daugiau įrašų, kuriuose yra modifikuotinų BaseRecord ypatybių. Pakeitimo įrašai apdorojami eilės tvarka nuo argumentų sąrašo pradžios iki pabaigos, o vėlesnės ypatybių reikšmės perrašo ankstesniąsias.
Įrašų rinkinio modifikavimas arba sukūrimas duomenų šaltinyje
Patch( DataSource, BaseRecordsTable, ChangeRecordTable1 [, ChangeRecordTable2, ... ] )
- DataSource - būtina. Duomenų šaltinis, kuriame yra norimi modifikuoti įrašai arba bus įrašai, kuriuos norite sukurti.
- BaseRecordTable – būtina. Įrašų, kuriuos norite modifikuoti arba kurti, lentelė. Jei įrašas gautas iš duomenų šaltinio, įrašas randamas ir modifikuojamas. Jei naudojamas Defaults rezultatas , įrašas sukuriamas. Norint sukurti naują įrašą, pataisų sakinio DataSource ir Funkcijos Defaults DataSource reikšmės turi sutapti.
- ChangeRecordTables – būtina. Viena arba kelios įrašų, kuriose yra modifikuotinų kiekvieno BaseRecordTable įrašo ypatybių, lentelės. Pakeitimo įrašai apdorojami eilės tvarka nuo argumentų sąrašo pradžios iki pabaigos, o vėlesnės ypatybių reikšmės perrašo ankstesniąsias.
Įrašų suliejimas
Patch( Record1, Record2 [, ...] )
- Įrašai - Būtina. Bent du įrašai, kuriuos norite sulieti. Įrašai apdorojami eilės tvarka nuo argumentų sąrašo pradžios iki pabaigos, o vėlesnės ypatybių reikšmės perrašo ankstesniąsias.
Pavyzdžiai
Įrašo modifikavimas arba sukūrimas (duomenų šaltinyje)
Šiuose pavyzdžiuose įrašą modifikuosite arba sukursite duomenų šaltinyje pavadinimu Ledai, kuriame yra duomenų šioje lentelėje ir automatiškai sukuria vertes IDstulpelyje:
| Formulė | Aprašas | Rezultatas |
|---|---|---|
|
Patch( Ledkream, LookUp( Ledai, Skonis = "Šokoladas" ), { Kiekis: 400 } ) |
Modifikuoja įrašą duomenų šaltinyje Ledai:
|
{ ID: 1, Skonis: "Šokoladiniai", Kiekis: 400 } Modifikuotas duomenų šaltinio Ledai įrašas Šokoladiniai. |
| Patch( IceCream, Defaults( IceCream ), { Flavor: "Strawberry" } ) | Sukuria įrašą duomenų šaltinyje Ledai:
|
{IID: 3, Flavor: "Strawberry", Quantity: 0 } Sukurtas duomenų šaltinio Ledai įrašas Braškiniai. |
Įvertinus ankstesnes formules, duomenų šaltinis baigiamas šiomis reikšmėmis:
Įrašų suliejimas (ne duomenų šaltinyje)
| Formulė | Aprašas | Rezultatas |
|---|---|---|
| Patch( { pavadinimas: "James", Balas: 90 }, { pavadinimas: "Jim", Passed: true } ) | Sulieja du įrašus ne duomenų šaltinyje:
|
{ Vardas: "Džimas", Balas: 90, Įvykdė: teisinga } |
Naudokite As arba ThisRecord
Naudojant As ar ThisRecord raktinį žodį formulėje bus išvengta dviprasmiško vertinimo turinio.
Tolesniame pavyzdyje, apgalvokite pirmąją paiešką If teiginyje.
(OrderID = A[@OrderID]) tikimasi, kad paieškos apimtis bus lyginama OrderIdOrderId su surinkimo AForAll apimtimi. Tuo atveju, jums gali reikėti A[@OrderId] būti nustatytam kaip vietiniam parametrui. Tai yra dviprasmiška.
„Power Apps“ šiuo metu interpretuoja tiek kairės pusės OrderId, tiek ir dešinės pusės A[@OrderId] kaip paieškos tikslo laukelį. Dėl to, paieška visuomet suras pirmąją eilutę [dbo].[Orders1], nes sąlyga visuomet yra teisinga (tai yra, bet kuri OrderId eilutė yra lygi jai pačiai.)
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"
}
)
)
)
As arba ThisRecord naudojimas
Kai tik įmanoma, naudokite As operatorių arba ThisRecord tam, kad būtų atskirta kairės pusės prasmė. Kaip rekomenduojama aukščiau pateiktam scenarijui.
Kai jūsų formulė naudoja keletą tikslų su ForAll, Filter ir Lookup tame pačiame duomenų šaltinyje ar lentelėje, gali būti, kad tikslo parametrai susidurs tame pačiame laukelyje Dėl to, rekomenduojama naudoti As operatorių ar ThisRecord tam, kad nustatytumėte laukelio pavadinimą ir išvengtumėte dviprasmybių.
Pavyzdžiui, galite naudoti As operatorių tam, kad atskirtumėte tolesnį pavyzdį.
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"
}
)
)
)
Kitu atveju, galite naudoti ThisRecord tuo pačiu tikslu.
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"
}
)
)
)
Tam, kad sužinotumėte apie As operatoriaus naudojimą ir ThisRecord, žr. Operatoriai straipsnį.