Plaastri funktsioon
Kehtib: Lõuendirakendused Mudelipõhised rakendused Power Platform CLI töölauavood
Muudab või loob kirje andmeallikas või ühendab kirjed väljaspool andmeallikat.
Kasutage funktsiooni Paigaldus, et muuta kirjeid keerulistes olukordades, näiteks kui teete värskendusi, mis ei nõua kasutaja sekkumist, või kui kasutate vorme, mis katavad mitut ekraani.
Kui soovite andmeallikas kirjeid lihtsate muudatuste jaoks kergemini värskendada, kasutage selle asemel funktsiooni Edit form. Kui lisate juhtelemendi Edit form, annate kasutajatele vormi, mis täidab ja seejärel salvestab muudatused andmeallikasse. Lisateavet leiate teemast Andmevormide mõistmine.
Vaadake videost, kuidas kasutada Patch funktsiooni.
Ülevaade
Kasutage funktsiooni Patch, et muuta ühte või mitut kirjet andmeallikas. Teatud väljade väärtusi muudetakse ilma teisi atribuute mõjutamata. Näiteks muudab see valem kliendi nimega Contoso telefoninumbri.
Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: "1-212-555-1234" } )
Kasutage funktsiooni Patch koos Defaults, et luua kirjeid. Kasutage seda käitumist, et luua üks ekraan kirjete loomiseks ja redigeerimiseks. Näiteks loob see valem kliendi nimega Contoso jaoks kirje.
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Isegi juhul, kui te ei tööta andmeallikaga, saate Patch abil ühendada kaks või rohkem kirjet. Näiteks ühendab see valem kaks kirjet sellisena, mis tuvastab nii telefoni kui ka Contoso asukoha.
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Kirjeldus
Kirje muutmine ja loomine andmeallikas.
Selle funktsiooni kasutamiseks andmeallikas määrake andmeallikas ja määrake seejärel põhikirje.
- Kirje muutmiseks peab põhikirje olema pärit andmeallikasst. Põhikirje võib olla tulnud läbi galerii Üksuste atribuudi, pandud konteksti muutujasse või tulnud mõne muu tee kaudu. Kuid saate põhikirjet jälgida tagasi andmeallikasse. See on oluline, kuna kirje sisaldab lisateavet, mis aitab kirjet uuesti muutmise jaoks leida.
- Põhikirje loomiseks vaikeväärtustega kasutage funktsiooni Defaults.
Seejärel määrake üks või mitu muudatuste kirjet, millest igaüks sisaldab põhikirjes atribuudi väärtuste alistamiseks uusi atribuudi väärtusi. Kirjete muutmine toimub järjekorras argumentide loendi algusest kuni lõpuni, nii et hilisemad atribuudi väärtused alistavad varasemad.
Funktsiooni Patch tagastusväärtus on kirje, mille muutsite või lõite. Kui lõite kirje, võib tagastatav väärtus sisaldada atribuute, mille andmeallikas automaatselt genereeris. Kuid tagastusväärtus ei anna seostuva tabeli väljadele väärtust.
Näiteks saate kasutada Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"));
ja seejärel MyAccount.'Primary Contact'.'Full Name'
. Te ei saa antud juhul täisnime anda. Seostuva tabeli väljadele juurdepääsuks kasutage hoopis omaette otsingut, näiteks:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Andmeallika värskendamisel võib ilmneda üks või mitu probleemi. Kasutage IfError ja IsError tagastatava väärtusega Paigaldus st, et tuvastada vigu ja reageerida neile, nagu Veakäsitlus kirjeldab. Probleemide tuvastamiseks ja uurimiseks võite kasutada ka funktsiooni Tõrked, nagu Andmeallikatega töötamist kirjeldatakse.
Seostuvad funktsioonid sisaldavad funktsiooni Update, et asendada terve kirje, ja funktsiooni Collect kirje loomiseks. Kasutage funktsiooni UpdateIf, et muuta mitme kirje teatud atribuute vastavalt tingimusele.
Kirjete kogumi muutmine ja loomine andmeallikas.
Paika saab kasutada ka mitme kirje loomiseks või muutmiseks ühe kõnega.
Ühe põhikirje edastamise asemel võib teise argumendina esitada põhikirjete tabeli. Kirjete muutmine on saadaval ka tabelina, mis vastab üks-ühele põhikirjetele. Kirjete arv iga muudatusega tabelis peab olema sama, mis kirjete arv põhitabelis.
Kui kasutate sel viisil funktsiooni Patch, on tagastamise väärtuseks ka tabel iga kirjega, mis vastab üks-ühele põhitabeliga ja muudetud kirjetega.
Kirjete ühendamine väljapoole andmeallikat
Määrake kaks või rohkem kirjet, mida soovite ühendada. Kirjed töödeldakse järjekorras argumentide loendi algusest kuni lõpuni, nii et hilisemad atribuudi väärtused alistavad varasemad.
Paik tagastab ühendatud kirje ega muuda selle argumente ega kirjeid üheski andmeallikas.
Süntaks
Kirje muutmine ja loomine andmeallikas.
Patch(DataSource,BaseRecord,ChangeRecord1 [, ChangeRecord2 , ... ])
- DataSource – nõutav. Andmeallikas, mis sisaldab muudetavat kirjet või sisaldab seda kirjet, mida soovite luua.
- BaseRecord – nõutav. Kirje, mida soovite muuta või luua. Kui kirje pärineb andmeallikast, siis kirje leitakse ja muudetakse. Kui kasutatakse Defaults tulemit, luuakse kirje.
- ChangeRecords – nõutav. Üks või mitu kirjet, mille atribuute on BaseRecordis vaja muuta. Kirjete muutmine toimub järjekorras argumentide loendi algusest kuni lõpuni, nii et hilisemad atribuudi väärtused alistavad varasemad.
Kirjete kogumi muutmine ja loomine andmeallikas.
Patch(DataSource,BaseRecordsTable,ChangeRecordTable1 [, ChangeRecordTable2 , ... ] )
- DataSource – nõutav. Andmeallikas, mis sisaldab muudetavaid kirjeid või sisaldab neid kirjeid, mida soovite luua.
- BaseRecordTable – nõutav. Kirjete tabel, mida soovite muuta või luua. Kui kirje pärineb andmeallikast, siis kirje leitakse ja muudetakse. Kui kasutatakse Defaults tulemit, luuakse kirje.
- ChangeRecordTables – nõutav. Üks või mitu kirjete tabelit, mis sisaldavad atribuute tabeli BaseRecordTable kirjete muutmiseks. Kirjete muutmine toimub järjekorras argumentide loendi algusest kuni lõpuni, nii et hilisemad atribuudi väärtused alistavad varasemad.
Kirjete ühendamine
Patch( Record1; Record2 [, ...] )
- Nõutavad kirjed . Valige ühendamiseks vähemalt kaks kirjet. Kirjed töödeldakse järjekorras argumentide loendi algusest kuni lõpuni, nii et hilisemad atribuudi väärtused alistavad varasemad.
Näited
Kirje muutmine ja loomine (andmeallikas).
Nendes näidetes muudate ja loote kirje andmeallikas nimega IceCream, mis sisaldab andmeid selles tabelis ja automaatselt loob väärtused IDveerus:
Valem | Kirjeldus | Tulemus |
---|---|---|
Plaaster( Jääkreem, LookUp( Jäätis, maitse = „Šokolaad” ), { Kogus: 400 } ) |
Muudab kirje andmeallikas IceCream:
|
{ ID: 1, Maitse: „Šokolaad”, Kogus: 400 } Kirjet Chocolate andmeallikas IceCream on muudetud. |
Patch( Jäätis, Defaults( IceCream ), { Maitse: "Maasikas" } ) | Loob kirje andmeallikas IceCream:
|
{ ID: 3, maitse: "maasikas", kogus: 0 } On loodud kirje Strawberry andmeallikas IceCream. |
Pärast eelmiste valemite hindamist lõpeb andmeallikas nende väärtustega.
Kirjete ühendamine (väljapoole andmeallikat)
Valem | Kirjeldus | Tulem |
---|---|---|
Patch( { Nimi: "James", Skoor: 90,Nimi } { : "Jim", Möödas: tõsi } ) | Ühendab kaks kirjet väljapoole andmeallikat:
|
{ Nimi: „Jim”, Skoor: 90, Läbitud: tõsi } |
Tehtemärgi As või ThisRecord kasutamine
Märksõna As või ThisRecord kasutamine valemis aitab vältida ebaselget hindamiskonteksti.
Allolevas näites vaadake esimest otsingut lauses If
. (OrderID = A[@OrderID])
eeldatakse, et OrderId
võrreldakse otsingu ulatust kogumise OrderId
A
ulatusega ForAll
. Sel juhul soovite tõenäoliselt, et A[@OrderId]
lahendataks kohaliku parameetrina. Aga see on ebaselge.
Power Apps tõlgendab praegu nii vasakpoolset väärtust OrderId
kui ka parempoolset väärtust A[@OrderId]
otsinguulatuse väljana. Seetõttu leiab otsing alati esimese rea kohas [dbo].[Orders1]
, kuna tingimus on alati tõene (see tähendab, et mis tahes rea OrderId
on võrdne iseendaga).
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"
}
)
)
)
Tehtemärgi As või ThisRecord kasutamine
Kui võimalik, kasutage tehtemärki As või ThisRecord, et kõrvaldada vasaku poole ebaselgus. Nagu ülaltoodud stsenaariumi puhul soovitatakse.
Kui teie valem kasutab ühe ja sama andmeallika või tabeli puhul mitut ulatust koos funktsioonidega ForAll
, Filter
ja Lookup
, on võimalik, et ulatuse parameetrid võivad sama väljaga kuskil mujal põrkuda. Seetõttu on soovitatav kasutada tehtemärki As või ThisRecord, et lahendada välja nimi ja vältida ebaselgust.
Näiteks saate kasutada tehtemärki As, et kõrvaldada allolevas näites ebaselgus.
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"
}
)
)
)
Teine võimalus on samal eesmärgil kasutada tehtemärki 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"
}
)
)
)
Kui soovite lisateavet tehtemärkide As ja ThisRecord kohta, lugege artiklit Tehtemärgid.