Partekatu bidez


Patch funtzioa

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:

Informazio orokorra

Erabili funtzioa Patch datu-iturburu bateko erregistro bat edo gehiago aldatzeko. Berariazko balioak eremuak aldatzen dira 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" } )

Oharra

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" } )

Deskribapenak

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-iturburu batetik etorri behar zen. Oinarrizko erregistroa galeria baten Items propietatearen bidez etorri daiteke, testuinguru-aldagai batean kokatu da edo beste bide batetik etorri daiteke. Hala ere, oinarrizko erregistroa datu-iturburura itzuli dezakezu. Hau garrantzitsua da, erregistroak informazio gehigarria baitu erregistroa berriro aurkitzen laguntzeko.
  • 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

Patch Dei bakar batekin hainbat erregistro sortzeko edo aldatzeko ere erabil daiteke.

Oinarri erregistro bakarra pasatu beharrean, oinarrizko erregistroen taula eman daiteke bigarren argumentuan. Aldaketen erregistroak taulan ematen dira, banan-banan dagozkienak. Aldaketa-taula bakoitzeko erregistroen kopurua oinarrizko taulan egindako erregistroen berdina izan behar da.

Modu honetan erabiltzean Patch , itzulitako balioa taula bat da, erregistro bakoitza oinarrizko eta aldaketa erregistroekin banan-banan dagoena.

Konbinatu erregistroak datu-iturburutik kanpo

Zehaztu bateratu nahi dituzun bi erregistro edo gehiago. Erregistroak argumentu-zerrendaren hasieratik amaierara prozesatzen dira, geroago propietate-balioak lehenagokoak dira.

Patch Bateratutako erregistroa itzultzen du, eta ez ditu bere argumentuak edo erregistroak aldatzen datu-iturburuetan.

Sintaxia

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-iturburu batetik badator, erregistroa aurkitu eta aldatu egiten da. Defaults funtzioaren emaitza erabiltzen bada, erregistro bat sortzen da. 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. Aldaketa-erregistroak argumentu-zerrendaren hasieratik amaierara prozesatzen dira, geroago propietate-balioak lehenagokoak dira.

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-iturburu batetik badator, erregistroa aurkitu eta aldatu egiten da. Defaults funtzioaren emaitza erabiltzen bada, erregistro bat sortzen da. 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. Aldaketa-erregistroak argumentu-zerrendaren hasieratik amaierara prozesatzen dira, geroago propietate-balioak lehenagokoak dira.

Erregistroak konbinatu

Patch( Record1, Record2 [, ...] )

  • Erregistroak - Beharrezkoa. Gutxienez, bi erregistro konbinatzeko. Erregistroak argumentu-zerrendaren hasieratik amaierara prozesatzen dira, geroago propietate-balioak lehenagokoak dira.

Adibideak

Aldatu edo sortu erregistro bat (datu-iturburu batean)

Adibide hauetan, erregistro bat aldatu edo sortuko duzu datu-iturburu batean, izena duena IceCream, honek dituen datuak biltzen ditu taula eta automatikoki sortzen ditu balioak IDazutabea:

Adibidea izozkia.

Formula Deskribapenak Result
Patch( Izozkia,
LookUp( Izozkia, Zaporea = "Txokolatea" ), { Kantitatea: 400 } )
Erregistro bat aldatzen du IceCream datu-iturburuan:
  • ID zutabea aldatu beharreko erregistroaren 1 balioa dauka. (Txokolatea erregistroak ID hori du.)
  • Balioan Kopurua zutabea aldatzen da 400.
{ ID: 1, Zaporea: "Txokolatea", Kantitatea: 400 }

Txokolatea sarrera - IceCream datu-iturburua aldatu da.
Patch( IceCream, Defaults ( IceCream ), { Flavor: "Strawberry" } ) Erregistro bat sortzen du IceCream datu-iturburuan:
  • ID zutabeak 3 balioa dauka, datu-iturburuek automatikoki sortzen duena.
  • Kopurua zutabeak 0 dauka, hau da, zutabe horren balio lehenetsia IceCream datu-iturburu, gisa Defaults funtzioak zehazten du.
  • Zaporea zutabeak Marrubia balioa dauka.
{ ID: 3, Flavor: "Marrubia", Quantity: 0 }

Marrubia sarrera IceCream datu-iturburuan sortu da.

Aurreko formulak ebaluatu ondoren, datu-iturburu balio hauekin amaitzen da:

Adibidea izozkia ondoren.

Konbinatu erregistroak (datu-iturburutik kanpo)

Formula Deskribapenak Result
Patch( { Izena: "James", Puntuazioa: 90 }, { Izena: "Jim", Gainditua: egia } ) Bi erregistro konbinatzen ditu datu-iturburutik kanpo:
  • Erregistro bakoitzeko Izena zutabeko balioak ez datoz bat. Emaitzak balioa (Jim) erregistroan argumentu-zerrendaren amaieratik gertuago dago balioaren ordez (James) hasieratik gertuago dagoen erregistroan.
  • Lehenengo erregistroak zutabe bat dauka (Puntuazioa) bigarren erregistroan ez dago. Emaitzak zutabea dauka bere balioarekin (90).
  • Bigarren erregistroak zutabe bat dauka (Gaindituta) lehen erregistroan ez dago. Emaitzak zutabea dauka bere balioarekin (egia).
{ Name: "Jim", Score: 90, Passed: true }

Erabilera Gisa edo Grabaketa hau

Erabiliz Gisa edo Grabaketa hau formulako gako-hitzak ebaluazio testuinguru anbiguoa ekiditen du.

Beheko adibidean, kontuan hartu lehen bilaketa If adierazpena. (OrderID = A[@OrderID]) espero da OrderId bilaketa-esparruko OrderId bilduma AForAll esparrukoarekin alderatzea. Kasu honetan, ziurrenik nahi duzu A[@OrderId] parametro lokal gisa ebazteko. Baina anbiguoa da.

Power Apps gaur egun ezkerreko biak interpretatzen ditu OrderId eta eskuinaldea A[@OrderId] bilaketa eremuko eremu gisa. Hori dela eta, bilaketak lehenengo lerroan beti aurkituko du [dbo].[Orders1] baldintza beti egia delako (hau da, edozein ilara OrderId berdina da.)

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 Gisa operadorea edo Grabaketa hau ezkerreko aldea desanbiguatzeko. As Gomendagarria da goiko eszenatokirako.

Zure formulak hainbat esparrurekin erabiltzen duenean ForAll, Filter, eta Lookup datu-iturburu edo taula berean, baliteke esparruaren parametroek beste leku batzuetan eremu berarekin talka egitea. Hori dela eta, gomendagarria da Gisa operadorea edo Grabaketa hau eremuaren izena konpontzeko eta anbiguotasuna ekiditeko.

Adibidez, Gisa operadorea beheko adibidean desanbiguatzeko.

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"
       }
   )
    )
)

Erabilera buruz gehiago jakiteko Gisa operadorea eta Grabaketa hau ikusi Operadoreak Artikulu.