Ielāpa funkcija
Attiecas uz: Audekla programmām Modeļa vadītas programmas Power Platform CLI darbvirsmas plūsmas
Modificē vai izveido vienu vai vairākus ierakstus datu avotā vai sapludina ierakstus ārpus datu avota.
Izmantojiet Ielāpa funkciju, lai modificētu ierakstus sarežģītās situācijās, piemēram, kad tiek veikti atjauninājumi, kuru atjaunināšanai nav nepieciešama lietotāja mijiedarbība, vai izmantojiet veidlapas, kas ietver vairākus ekrānus.
Lai vieglāk atjauninātu ierakstus datu avotā un veiktu vienkāršas izmaiņas, tā vietā izmantojiet vadīklu Rediģēt veidlapu. Pievienojot vadīklu Rediģēt veidlapu, jūs nodrošināt lietotājiem aizpildāmo veidlapu un pēc tam saglabājat datu avota izmaiņas. Papildinformāciju skatiet tēmā Datu veidlapu izkārtojuma izprašana.
Noskatieties šo videoklipu, lai uzzinātu, kā izmantot Patch funkciju:
Pārskats
Izmantojiet funkciju Patch, lai modificētu vienu vai vairākus datu avota ierakstus. Konkrētu lauku vērtības tiek modificētas, neietekmējot citus rekvizītus. Piemēram, šī formula maina tālruņa numuru klientam ar nosaukumu Bērziņš:
Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: "1-212-555-1234" } )
Izmantojiet funkciju Patch ar funkciju Defaults, lai izveidotu ierakstus. Izmantojiet šo uzvedību, lai izveidotu vienu ekrānu gan ierakstu izveidei, gan rediģēšanai. Piemēram, šī formula izveido ierakstu klientam ar nosaukumu Bērziņš:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Pat, ja nestrādājat ar datu avotu, varat izmantot Patch, lai sapludinātu divus vai vairākus ierakstus. Piemēram, šī formula sapludina divus ierakstus vienā, kas identificē gan tālruņa numuru gan atrašanās vietu klientam Bērziņš:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Apraksts
Ieraksta modificēšana vai izveide datu avotā
Lai izmantotu šo funkciju ar datu avotu, norādiet datu avotu un pēc tam norādiet pamatierakstu:
- Lai modificētu ierakstu, pamatierakstam ir jānāk no datu avota. Pamatieraksts var nākt no galerijas rekvizīta Elementi, tikt novietots konteksta mainīgajā vai nākt no cita ceļa. Taču varat izsekot pamatierakstam līdz datu avotam. Tas ir svarīgi, jo ieraksts ietvers papildinformāciju, lai palīdzētu atkal atrast ierakstu modificēšanai.
- Lai izveidotu ierakstu, izmantojiet funkciju Defaults, lai izveidotu pamatierakstu ar noklusējuma vērtībām.
Pēc tam norādiet vienu vai vairākus izmaiņu ierakstus, no kuriem katrs satur jaunas rekvizītu vērtības, kuras ignorē rekvizīta vērtības pamatierakstā. Izmaiņu ieraksti tiek apstrādāti secībā no argumentu saraksta sākuma līdz beigām, vēlākajām rekvizīta vērtībām ignorējot agrākās.
Patch atgrieztā vērtība ir ieraksts, kuru modificējāt vai izveidojāt. Ja izveidojāt ierakstu, atgrieztā vērtība varētu iekļaut rekvizītus, kurus datu avots ģenerēja automātiski. Taču atgrieztā vērtība nenodrošina vērtību saistītas tabulas laukiem.
Piemēram, jūs izmantojat Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"));
un pēc tam MyAccount.'Primary Contact'.'Full Name'
. Šajā gadījumā nevarat piešķirt pilno vārdu. Lai piekļūtu saistītās tabulas laukiem, izmantojiet atsevišķu uzmeklēšanu, piemēram:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Atjauninot datu avotu, var rasties viena vai vairākas problēmas. Izmantojiet IfError un IsError ar atgriešanas vērtību no Ielāpa, lai noteiktu un atbildētu uz kļūmēm, kas aprakstītas sadaļā Kļūmju risināšana. Tāpat jūs varat izmantot funkciju Kļūmes, lai identificētu un izpētītu problēmas, kā aprakstīts sadaļā Darbs ar datu avotiem.
Saistītās funkcijas ietver funkciju Update, lai aizstātu visu ierakstu, un funkciju Collect, lai izveidotu ierakstu. Izmantojiet funkciju UpdateIf, lai modificētu konkrētus vairāku ierakstu rekvizītus, pamatojoties uz nosacījumu.
Ierakstu kopas modificēšana vai izveide datu avotā
Ielāpu var izmantot arī, lai izveidotu vai modificētu vairākus ierakstus ar vienu zvanu.
Tā vietā, lai nodotu vienu pamatierakstu, otrajā argumentā var nodrošināt pamatierakstu tabulu. Izmaiņu ieraksti tiek sniegti arī tabulā, atbilstoši viens pret vienu ar pamatierakstiem. Ierakstu skaitam katrā izmaiņu tabulā ir jābūt tādam pašam kā ierakstu skaitam pamata tabulā.
Šādā veidā izmantojot Patch funkciju, arī atgrieztā vērtība ir tabula, kurā katrs ieraksts atbilst viens pret vienu ar pamata un izmaiņu ierakstiem.
Ierakstu sapludināšana ārpus datu avota
Norādiet divus vai vairākus ierakstus, kurus vēlaties sapludināt. Ieraksti tiek apstrādāti secībā no argumentu saraksta sākuma līdz beigām, vēlākajām rekvizīta vērtībām ignorējot agrākās.
Ielāps atgriež sapludināto ierakstu un nemodificē tā argumentus vai ierakstus nevienā datu avotā.
Sintakse
Ieraksta modificēšana vai izveide datu avotā
Ielāps( DataSource,BaseRecord,ChangeRecord1 [, ChangeRecord2, ... ])
- DataSource - Obligāts. Datu avots, kurā ir ieraksts, kuru vēlaties modificēt vai saturēs ierakstu, kuru vēlaties izveidot.
- BaseRecord - Obligāts. Ieraksts, kuru modificēt vai izveidot. Ja ieraksts nāca no datu avota, ieraksts tiek atrasts un modificēts. Ja tiek izmantots Defaults rezultāts, tiek izveidots ieraksts.
- ChangeRecords - Obligāts. Viens vai vairāki ieraksti, kuros ir rekvizīti, kas jāmodificē BaseRecord. Izmaiņu ieraksti tiek apstrādāti secībā no argumentu saraksta sākuma līdz beigām, vēlākajām rekvizīta vērtībām ignorējot agrākās.
Ierakstu kopas modificēšana vai izveide datu avotā
Ielāps( DataSource,BaseRecordsTable,ChangeRecordTable1 [, ChangeRecordTable2, ... ] )
- DataSource - Obligāts. Datu avots, kurā ir ieraksti, kurus vēlaties modificēt vai saturēs ieraksti, kurus vēlaties izveidot.
- BaseRecordTable - Obligāts. Ierakstu tabula, kas jāmodificē vai jāveido. Ja ieraksts nāca no datu avota, ieraksts tiek atrasts un modificēts. Ja tiek izmantots Defaults rezultāts, tiek izveidots ieraksts.
- ChangeRecordTables - Obligāts. Viena vai vairākas ierakstu tabulas, kas satur rekvizītus, kurus modificēt katram BaseRecordTable ierakstam. Izmaiņu ieraksti tiek apstrādāti secībā no argumentu saraksta sākuma līdz beigām, vēlākajām rekvizīta vērtībām ignorējot agrākās.
Ierakstu sapludināšana
Ielāps( Ieraksts1,Ieraksts2 [, ...] )
- Ieraksti - Obligāti. Vismaz divi ieraksti, kurus vēlaties sapludināt. Ieraksti tiek apstrādāti secībā no argumentu saraksta sākuma līdz beigām, vēlākajām rekvizīta vērtībām ignorējot agrākās.
Piemēri
Ieraksta modificēšana vai izveide (datu avotā)
Šajos piemēros jūs modificēsit vai izveidosit ierakstu datu avotā ar nosaukumu IceCream, kas satur datus šajā tabulā un automātiski ģenerē vērtības IDkolonnās:
Formula | Apraksts | Rezultāts |
---|---|---|
Plāksteris( Saldējums, LookUp( IceCream, Garša = "Šokolādes" ), { Daudzums: 400 }) |
Modificē ieraksta datu avotu IceCream:
|
{ ID: 1, Garša: "Šokolāde", Daudzums: 400 } Ieraksts Šokolāde datu avotā IceCream ir modificēts. |
Plāksteris( IceCream, Defaults( IceCream ), { Garša: "Zemene" } ) | Izveido ierakstu datu avotā IceCream:
|
{ ID: 3, Flavor: "Zemeņu", Daudzums: 0 } Ieraksts Zemeņu datu avotā IceCream ir izveidots. |
Pēc iepriekšējo formulu novērtēšanas, datu avots beidzas ar šādām vērtībām:
Ierakstu sapludināšana (ārpus datu avota)
Formula | Apraksts | Rezultāts |
---|---|---|
Plāksteris( { Vārds: "Džeimss", Rezultāts: 90,Vārds } { : "Džims", Pagājis: patiess } ) | Sapludina divus ierakstus ārpus datu avota:
|
{ Vārds:"Rihards", Rezultāts: 90, Nodots: true } |
As vai ThisRecord lietošana
Ja formulā tiek izmantots atslēgvārds As vai ThisRecord, tiek novērsts neviennozīmīga novērtējuma konteksts.
Tālāk sniegtajā piemērā apsveriet pirmo uzmeklēšanu If
priekšrakstā. (OrderID = A[@OrderID])
ir sagaidāms, ka tiks salīdzināts OrderId
uzmeklēšanas tvērums ar OrderId
kolekcijas A
ForAll
tvērumā. Šajā gadījumā, iespējams, vēlēsities, lai A[@OrderId]
tiktu atrisināts kā lokālais parametrs. Taču tas ir neviennozīmīgs.
Power Apps pašlaik interpretē gan kreisās puses OrderId
, gan labās puses A[@OrderId]
kā uzmeklēšanas tvērumā esošu lauku. Tāpēc uzmeklēšanas laikā vienmēr tiks atrasta pirmā rinda vienumā [dbo].[Orders1]
, jo nosacījums vienmēr ir patiess (t.i., visi rindas OrderId
ir līdzīgi paši sev).
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 vai ThisRecord lietošana
Kad vien iespējams, izmantojiet As operatoru vai ThisRecord, lai novērstu kreisās puses daudznozīmību. Kā ieteikts iepriekš minētajā scenārijā.
Ja vienā datu avotā vai tabulā jūsu formula izmanto vairākus tvērumus ar ForAll
, Filter
un Lookup
, pastāv tvēruma parametru konflikta iespēja ar tādu pašu lauku kādā citā vietā. Tāpēc ir ieteicams izmantot As operatoru vai ThisRecord, lai atrisinātu lauka nosaukumu un novērstu neviennozīmību.
Piemēram, varat izmantot As operatoru, lai novērstu neviennozīmību tālāk sniegtajā piemērā.
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"
}
)
)
)
Tāpat šim nolūkam varat izmantot 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"
}
)
)
)
Lai uzzinātu vairāk par As operatora un ThisRecord lietojumu, skatiet rakstu Operatori.