Märkus.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida sisse logida või kausta vahetada.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida kausta vahetada.
Kehtib järgmise kohta: Lõuendirakendused
Copilot Studio
töölauavood
Mudelipõhised rakendused
Power Platform CLI
Dataverse'i funktsioonid
Muudab või loob kirjeandmeallikas või ühendab kirjed väljaspool andmeallikat.
Patch Selle funktsiooni abil saate muuta kirjeid keerulistes olukordades (nt kui teete värskendusi, mis ei nõua kasutaja sekkumist või mitut ekraani hõlmavaid vorme).
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.
Sellest videost saate teada, kuidas funktsiooni kasutada.Patch
Ülevaade
Selle Patch funktsiooni abil saate muuta andmeallika ühte või mitut kirjet. Teatud väljade väärtusi muudetakse ilma teisi atribuute mõjutamata. Näiteks muudab see valem kliendi nimega Contoso telefoninumbri.
Patch( Customers, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )
Kasutage Patch kirjete loomiseks funktsiooni Vaikesätted . 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" } )
Märkus.
Kui paigate kogumiku vaikeväärtustega andmeallika kirje abil, värskendab paikamistoiming kogumist nii määratud paikamisväärtuste kui ka andmeallika vaikeväärtustega. Uue kirje loomiseks peavad paigalause DataSource ja funktsiooni Defaults andmeallikas kattuma.
Isegi kui te ei tööta andmeallikaga, saate seda kasutada Patch kahe või enama kirje ühendamiseks. 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. Võimalik, et põhikirje on tulnud läbi galerii atribuudi Üksused , paigutatud kontekstimuutujasse või läbinud mõne muu tee. Kuid saate põhikirjet jälgida tagasi andmeallikasse. See on oluline, kuna kirje sisaldab lisateavet, mis aitab kirjet muutmiseks uuesti 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.
Tagastatav Patch väärtus on kirje, mida te muutsite või lõite. Kui lõite kirje, võib tagastusvää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 tekkida üks või mitu probleemi. Kasutage funktsiooni IfError ja IsError koos tagastatava väärtusega Patch tõrgete tuvastamiseks ja neile vastamiseks, nagu tõrketöötlus 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.
Patch 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.
Sel viisil kasutamisel Patch on tagastusväärtus ka tabel, kus iga kirje vastab üks-ühele koos alus- ja muutmiskirjetega.
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.
Patch tagastab ühendatud kirje ega muuda oma 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. Uue kirje loomiseks peavad paigalause DataSource ja funktsiooni Defaults andmeallikas kattuma.
- 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. Uue kirje loomiseks peavad paigalause DataSource ja funktsiooni Defaults andmeallikas kattuma.
- 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( Kirje1, Kirje2 [, ...] )
- 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 |
|---|---|---|
|
Patch( IceCream, LookUp( Jäätis, maitse = „Šokolaad” ), { Kogus: 400 } ) |
Muudab kirje andmeallikas IceCream:
|
{ ID: 1, Maitse: „Šokolaad”, Kogus: 400 } Kirjet Chocolate andmeallikas IceCream on muudetud. |
| Patch( IceCream, 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 | Tulemus |
|---|---|---|
| Patch( { Name: "James", score: 90 }, { Name: "Jim", Läbitud: true } ) | Ü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 OrderIdA 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.