Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Honako hauei aplikatzen zaie: Mihise-aplikazioak
Copilot Studio
Mahaigaineko fluxuak
Ereduetan oinarritutako aplikazioak
Power Platform CLI
Dataverse funtzioak
Erregistro bat edo gehiago aldatzen edo sortzen du datu-iturburu batean edo erregistroak konbinatzen ditu datu-iturburu batetik kanpo.
Erabili funtzioa Patch egoera konplexuetan erregistroak aldatzeko, adibidez, erabiltzailearen interakziorik behar ez duten eguneratzeak egiten dituzunean edo pantaila anitz dituzten inprimakiak erabiltzen dituzunean.
Datu-iturburu baten erregistroak eguneratzeko aldaketa errazak eguneratzeko, erabili Edit form kontrola ordez. Gehitzen duzunean Edit form kontrola, erabiltzaileei bete beharreko inprimakia eskaintzen diezu eta ondoren datu-iturburu batean gordetako aldaketak gordetzen dituzu. Informazio gehiago lortzeko, ikus Ezagutu datu-inprimakiak.
Ikusi bideo hau funtzioa nola Patch erabili jakiteko:
Overview
Erabili funtzioa Patch datu-iturburu bateko erregistro bat edo gehiago aldatzeko. Eremu jakin batzuen balioak eguneratzen ditu, beste propietateei eragin gabe. Adibidez, formula honek Contoso izeneko bezeroarentzako telefono zenbakia aldatzen du:
Patch( Customers, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )
Erabili PatchLehenetsiak funtzioarekin erregistroak sortzeko. Erabili portaera hau pantaila bakarra bat sortzeko erregistroak sortu eta editatzeko. Adibidez, formula honek Contoso izeneko bezeroarentzako erregistro bat sortzen du:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Note
Bilduma bati adabakiak jartzen dizkiozunean, balio lehenetsiak dituen datu-iturburu bateko erregistro bat erabiliz, adabaki-eragiketak bilduma eguneratzen du zehaztutako adabaki-balioekin eta datu-iturburuko balio lehenetsiekin. Adabaki instrukzioaren DataSource eta Defaults funtzioaren DataSource bat etorri behar dute erregistro berri bat sortzeko.
Datu-iturri batekin lan egiten ez baduzu ere, bi erregistro edo gehiago bateratzeko erabil Patch dezakezu. Adibidez, formula honek bi erregistro batzen ditu bai telefono zenbakia eta bai Contoso-ren kokapena identifikatzen dituen batean:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Description
Aldatu edo sortu erregistro bat datu-iturburu batean
Funtzio hau datu-iturburuarekin erabiltzeko, zehaztu datu-iturburua eta, ondoren, zehaztu oinarri erregistroa:
- Erregistro bat aldatzeko, oinarrizko erregistroa datu-iturri batetik etorri behar da. Oinarrizko erregistroa galeria baten Items propietatearen bidez lor dezakezu, testuinguru-aldagai batean kokatu edo beste bide baten bidez lor dezakezu. Hala ere, oinarrizko erregistroa datu-iturrira itzultzeko gai izan behar duzu. Baldintza hau garrantzitsua da, erregistroak erregistroa berriro aurkitzen lagunduko dizun informazio gehigarria duelako.
- Erregistro bat sortzeko, erabili Defaults funtzioa oinarri-erregistroa sortzeko balio lehenetsiekin.
Ondoren, zehaztu aldaketa erregistro bat edo gehiago, eta bakoitzak erregistroan propietateen balioa baliogabetzen duten propietate-balio berriak ditu. Aldaketa-erregistroak argumentu-zerrendaren hasieratik amaierara prozesatzen dira, geroago propietate-balioak lehenagokoak dira.
Itzulitako Patch balioa aldatu edo sortu duzun erregistroa da. Erregistro bat sortu baduzu, itzulitako balioak datu-iturburuak automatikoki sortutako propietateak izan ditzake. Hala ere, itzultzeko balioak ez du erlazionatutako taulako eremuen balioa ematen.
Adibidez, Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name")); erabiltzen duzu eta gero MyAccount.'Primary Contact'.'Full Name'. Ezin duzu izen osoa eman kasu honetan. Horren ordez, erlazionatutako taulako eremuetara sartzeko, erabili bilaketa bereizi bat, hala nola:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Datu-iturri bat eguneratzen duzunean, arazo bat edo gehiago sor daitezke. Erabili IfError eta IsError itzulitako balioarekin, erroreak Patch detektatzeko eta horiei erantzuteko, Erroreen kudeaketak deskribatzen duen bezala. Halaber, Errors funtzioa erabil dezakezu, gaiak identifikatu eta aztertzeko Datu-iturburuekin lan egitea deskribatzen du.
Lotutako funtzioak, Update funtzioa dute erregistro osoa ordezkatzeko funtzioa eta Collect funtzioa erregistro bat sortzeko. Erabili UpdateIf funtzioa baldintza batean oinarritutako erregistro anitzen propietate espezifikoak aldatzeko.
Aldatu edo sortu erregistro multzo bat datu-iturburu batean
Dei bakar batekin erregistro anitz sortu edo aldatzeko ere erabil Patch dezakezu.
Oinarrizko erregistro bakarra pasatu beharrean, eman oinarrizko erregistroen taula bigarren argumentuan. Eman aldaketa-erregistroak taula batean ere, oinarrizko erregistroekin banan-banan dagoz. Aldaketa-taula bakoitzeko erregistroen kopurua oinarrizko taulan egindako erregistroen berdina izan behar da.
Modu honetan erabiltzen Patch duzunean, itzulitako balioa taula bat da, erregistro bakoitza banan-banan dagoena, oinarrizko eta aldaketa erregistroekin.
Konbinatu erregistroak datu-iturburutik kanpo
Zehaztu bateratu nahi dituzun bi erregistro edo gehiago. Funtzioak erregistroak prozesatzen ditu argumentu-zerrendaren hasieratik amaieraraino, ondorengo propietate-balioek aurrekoak gainjartzen dituztelarik.
Patch Bateratutako erregistroa itzultzen du, eta ez ditu bere argumentuak edo erregistroak aldatzen datu-iturburuetan.
Syntax
Aldatu edo sortu erregistro bat datu-iturburu batean
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, ... ])
- DataSource – Beharrezkoa. Aldatu nahi duzun erregistroa edo sortu nahi duzun erregistroa edukiko duen datu-iturburu dauka.
- BaseRecord – Beharrezkoa. Aldatu edo sortuko den erregistroa. Erregistroa datu-iturri batetik dator, funtzioak erregistroa aurkitu eta aldatu egiten du. Lehenetsiaren emaitza erabiltzen bada, funtzioak erregistro bat sortuko du. Adabaki-instrukzioaren DataSource eta Defaults funtzioaren DataSource bat etorri behar dute erregistro berri bat sortzeko.
- ChangeRecords – Beharrezkoa. Aldatu beharreko propietateak dituzten erregistro bat edo gehiago BaseRecord. Funtzioak aldaketa-erregistroak ordenan prozesatzen ditu argumentu-zerrendaren hasieratik amaieraraino, ondorengo propietate-balioek aurrekoak gainjartzen dituztelarik.
Aldatu edo sortu erregistro multzo bat datu-iturburu batean
Patch( DataSource, BaseRecordsTable, ChangeRecordTable1 [, ChangeRecordTable2, ... ] )
- DataSource – Beharrezkoa. Aldatu nahi dituzun erregistroak edo sortu nahi duzun erregistroak edukiko dituen datu-iturburu dauka.
- BaseRecordTable – Beharrezkoa. Aldatu edo sortzeko erregistro taula. Erregistroa datu-iturri batetik dator, funtzioak erregistroa aurkitu eta aldatu egiten du. Lehenetsiaren emaitza erabiltzen bada, funtzioak erregistro bat sortuko du. Adabaki-instrukzioaren DataSource eta Defaults funtzioaren DataSource bat etorri behar dute erregistro berri bat sortzeko.
- ChangeRecordTables – Beharrezkoa. Erregistro bakoitzeko aldatzeko propietateak dituzten erregistro taula bat edo gehiago BaseRecordTable. Funtzioak aldaketa-erregistroak ordenan prozesatzen ditu argumentu-zerrendaren hasieratik amaieraraino, ondorengo propietate-balioek aurrekoak gainjartzen dituztelarik.
Merge records
Patch( Record1, Record2 [, ...] )
- Erregistroak - Beharrezkoa. Gutxienez, bi erregistro konbinatzeko. Funtzioak erregistroak ordenan prozesatzen ditu argumentu-zerrendaren hasieratik amaieraraino, ondorengo propietate-balioak aurrekoak gainidatziz.
Examples
Aldatu edo sortu erregistro bat (datu-iturburu batean)
Adibide hauetan, IceCream izeneko datu-iturburu batean erregistro bat aldatu edo sortzen duzu. Datu-iturburuak taula honetako datuak ditu, eta automatikoki sortzen ditu balioak IDzutabean:
Datu-iturburu honen memoria bertsio bat sortzeko, adibide hauek probatu ahal izateko, ebaluatu formula hau:
ClearCollect( IceCream,
{ ID: 1, Flavor: "Chocolate", Quantity: 100 },
{ ID: 2, Flavor: "Vanilla", Quantity: 200 }
)
| Formula | Description | Result |
|---|---|---|
|
Patch( Izozkia, LookUp( Izozkia, Zaporea = "Txokolatea" ), { Kantitatea: 400 } ) |
Erregistro bat aldatzen du IceCream datu-iturburuan:
|
{ ID: 1, Zaporea: "Txokolatea", Kantitatea: 400 } Txokolatezko sarrera Izozkiaren datu-iturburuan aldatu egiten da. |
| Patch( IceCream, Defaults ( IceCream ), { Flavor: "Strawberry" } ) | Erregistro bat sortzen du IceCream datu-iturburuan:
|
{ ID: 3, Flavor: "Marrubia", Quantity: 0 } Izozkiaren datu-iturburuko Strawberry sarrera sortzen da. |
Aurreko formulak ebaluatu ondoren, datu-iturburua balio hauekin amaitzen da:
Konbinatu erregistroak (datu-iturburutik kanpo)
| Formula | Description | Result |
|---|---|---|
| Patch( { Izena: "James", Puntuazioa: 90 }, { Izena: "Jim", Gainditua: egia } ) | Bi erregistro konbinatzen ditu datu-iturburutik kanpo:
|
{ Name: "Jim", Score: 90, Passed: true } |
Erregistro multzo bat aldatu edo sortu (datu-iturburu batean)
Erregistro bakarren ordez taulekin erabiltzen Patch duzunean, dei bakarrean erregistro anitz sor edo alda ditzakezu. Itzulitako balioa sarrerako taulekin bat datorren erregistroen taula da.
Adibide honek IceCream datu-iturburuko zapore anitzen kantitatea eguneratzen du aldi berean:
Patch(
IceCream,
Table(
{ ID: 1, Flavor: "Chocolate", Quantity: 150 },
{ ID: 2, Flavor: "Vanilla", Quantity: 200 }
),
Table(
{ Quantity: 300 },
{ Quantity: 400 }
)
)
Emaitza taula bat da, eguneratutako erregistroekin: { ID: 1, Flavor: "Chocolate", Quantity: 300 } eta { ID: 2, Flavor: "Vanilla", Quantity: 400 }.
Adibide honek hainbat erregistro berri sortzen ditu lehenetsiak erabiliz:
Patch(
IceCream,
Table( Defaults( IceCream ), Defaults( IceCream ) ),
Table(
{ Flavor: "Mint", Quantity: 60 },
{ Flavor: "Peach", Quantity: 80 }
)
)
Note
Taulekin erabiltzen Patch duzunean, aldaketa-taula bakoitzeko erregistro kopuruak oinarrizko taulako erregistro kopuruarekin bat etorri behar du. Bestela, errore bat gertatuko da.
Erregistro anitz aldatzean akatsak detektatzeko, erabili IfError.
IfError Mekanismo hobetsia da eta Power Fx ostalarietan funtzionatzen du:
IfError(
Patch(
IceCream,
baseRecords,
changeRecords
),
Notify( "Some records failed to update: " & FirstError.Message, NotificationType.Error )
)
Patch Dataverse-ren zutabe motekin
Ondorengo adibideak Microsoft Dataverse datu-iturriei aplikatzen zaizkie. Erregistroen formak datu-iturriaren arabera aldatzen dira (adibidez, SharePoint eta SQL Server-ek formatu desberdinak dituzte).
Aukera-zutabea: Aukera-zutabe bat ezartzeko, erabili enum balioa zuzenean. Adibide honek Egoera aukeraren zutabea ezartzen du Kontuak taula batean:
Patch(
Accounts,
LookUp( Accounts, 'Account Name' = "Contoso" ),
{ 'Status': 'Status (Accounts)'.Active }
)
Bilaketa zutabea: Bilaketa zutabe bat ezartzeko, eman erregistro bat erlazionatutako taularen gako primarioarekin. Adibide honek kontaktu nagusiaren bilaketa ezartzen du Kontuen erregistro batean:
Patch(
Accounts,
LookUp( Accounts, 'Account Name' = "Contoso" ),
{ 'Primary Contact': LookUp( Contacts, 'Full Name' = "John Smith" ) }
)
Note
Zutabe motako adibide hauek Dataverse-ren espezifikoak dira. Beste datu-iturri batzuek, hala nola SharePoint edo SQL Server, erregistro forma desberdinak behar dituzte antzeko zutabe motetarako. Kontsultatu zure datu-iturburu zehatzaren dokumentazioa formatu egokia lortzeko.
Erabilera erabiltzen duten formuletan Patch
Funtzioa Patch bera ez da delegazioaren mende, datu-iturrian idazten duelako kontsultatu beharrean. Hala ere, delegazio-abisuak ager daitezke formuletan erregistro-hautapenaren Patch zatiak ( adibidez, Iragazkia, Bilatu edo ForAll) datu-iturburuaren delegazio-mugak gainditzen dituen kontsulta bat erabiltzen duten formuletan.
Delegazio-abisu bat ikusten duzunean , barne hartzen Patchduen formula batean, egiaztatu abisua datuak berreskuratzeko funtzioei Patch aplikatzen zaien ala ez. Delegazioari buruzko informazio gehiago nahi izanez gero, ikus Ulertu delegazioa mihise-aplikazio batean.
Funtzioarekin Patch ohiko akatsak
Funtzioa Patch erabiltzen duzunean, erroreak gerta daitezke datu-iturburuen konektibitatea, baimenak edo datu-gatazkak direla eta. Erabili IfError eta IsError akatsak detektatzeko eta behar bezala erantzuteko.
"Sareko errorea funtzioa erabiltzean Patch ": Errore honek normalean adierazten du aplikazioa ezin dela datu-iturrira iritsi. Arrazoi ohikoenak Interneteko konexioa galtzea, datu-iturria aldi baterako erabilgarri ez egotea edo uneko erabiltzailearentzat baimen nahikorik ez izatea dira. Itzulbiratu Patch deia IfError-en , erabiltzaileei mezu esanguratsu bat emateko.
"Gatazkak daude zerbitzariaren aldaketekin": Errore hau beste erabiltzaile edo prozesu batek erregistro bera aldatzen duenean gertatzen da zure aplikazioak erregistroa irakurri eta aldaketa idazten duen unetik bitartean. Freskatu datu-iturburua Freskatu funtzioa deituz eta berriro saiatu eragiketa.
Baimen-erroreak: erabiltzaileak datu-iturburuan erregistroak sortzeko edo aldatzeko baimenik ez badu, Patch deiak huts egingo du. Erabili IfError baimenekin lotutako erroreak harrapatzeko eta erabiltzailea gidatzeko.
Erroreak kudeatzeko eredu orokorrak lortzeko, ikus Erroreen kudeaketa.
Erabilera Gisa edo Grabaketa hau
Erabili As edo ThisRecord gako-hitza zure formularean, ebaluazio-testuinguru anbiguoa saihesteko.
Hurrengo adibidean, ikus dezagun adierazpenaren lehenengoa LookupIf .
(OrderID = A[@OrderID])Espero da esparruan bilduma esparruan konparatzea OrderIdLookup.ForAllAOrderId Kasu honetan, ziurrenik parametro lokal gisa ebatzi nahi A[@OrderId] duzu. Baina anbiguoa da.
Power Apps gaur egun ezkerreko aldea OrderId eta eskuineko aldea A[@OrderId] eremu gisa interpretatzen ditu Lookup esparruan. Beraz, Lookup lehenengo errenkada [dbo].[Orders1] beti aurkitzen du, baldintza beti egia delako (hau da, edozein errenkada OrderId bere buruaren berdina delako).
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"
}
)
)
)
Erabilera Gisa edo Grabaketa hau
Ahal den guztietan, erabili As eragilea edo ThisRecord gako-hitza ezkerreko aldea desanbiguatzeko. Aurreko eszenatokian gomendatzen den bezala.
Zure formulak esparru ForAllanitz erabiltzen dituenean , Filter, eta Lookup datu-iturburu edo taula berean, esparru-parametroek beste nonbait eremu berarekin talka egin dezakete. Beraz, erabili As edo ThisRecord eragilea eremuaren izena ebazteko eta anbiguotasuna saihesteko.
Adibidez, As eragilea erabil dezakezu desanbiguatzeko hurrengo adibidean.
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"
}
)
)
)
Bestela, erabil dezakezu Grabaketa hau helburu berarekin.
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"
}
)
)
)
As operadorearen eta ThisRecord-en erabilerari buruz gehiago jakiteko, ikus Eragileen artikulua.