Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Aplícase a: Aplicacións
de lenzo Copilot Studio
Fluxos
de escritorio Aplicacións
baseadas en modelos Funcións de Power Platform CLI
Dataverse
Modifica ou crea un ou varios rexistros nunha orixe de datos ou fusiona rexistros fóra dunha orixe de datos.
Use a Patch función para modificar rexistros en situacións complexas, como cando realiza actualizacións que non requiren interacción do usuario ou usa formularios que abranguen varias pantallas.
Para actualizar rexistros nunha orixe de datos máis facilmente para cambios sinxelos, use o control Editar formulario no seu lugar. Cando engade un control Editar formulario, proporcionas aos usuarios un formulario para cubrir e logo gardar os cambios nunha orixe de datos. Para obter máis información, consulte Comprender os formularios de datos.
Mira este vídeo para aprender a usar a Patch función:
Visión xeral
Utiliza a Patch función para modificar un ou máis rexistros dunha fonte de datos. Os valores de campos específicos modifícanse sen afectar a outras propiedades. Por exemplo, esta fórmula cambia o número de teléfono dun cliente chamado Contoso:
Patch( Customers, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )
Utilízase Patch coa función Por defecto para crear rexistros. Use este comportamento para crear unha pantalla única para crear e editar rexistros. Por exemplo, esta fórmula crea un rexisrto para un cliente chamado Contoso:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Nota
Cando se parche unha colección usando un rexistro dunha fonte de datos con valores predeterminados, a operación de parche actualiza a colección cos valores de parche especificados e os valores predeterminados da fonte de datos. O DataSource da instrución patch e o DataSource da función Defaults deben coincidir para crear un novo rexistro.
Aínda que non esteas a traballar cunha fonte de datos, podes usar Patch para fusionar dous ou máis rexistros. Por exemplo, esta fórmula fusiona dous rexistros nun que identifica tanto o número de teléfono como a localización de Contoso:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Descripción
Modificar ou crear un rexistro nunha orixe de datos
Para usar esta función cunha orixe de datos, especifique a orixe de datos e, a continuación, especifique un rexistro base:
- Para modificar un rexistro, o rexistro base debe proceder dunha orixe de datos. O rexistro base pode vir a través da propiedade Items dunha galería, ser colocado nunha variable de contexto ou pasar por algún outro camiño. Pero pode rastrexar o rexistro base ata a orixe de datos. Isto é importante xa que o rexistro inclúe información adicional para axudar a atopar o rexistro de novo para a súa modificación.
- Para crear un rexistro, use a función Defaults para crear un rexistro base con valores predeterminados.
A continuación, especifique un ou varios rexistros de cambios, cada un dos cales contén novos valores de propiedade que anulan os valores da propiedade no rexistro base. Os rexistros de cambios son procesados en orde dende o comezo da lista de argumentos ata o final, os valores de propiedades posteriores anulan aos anteriores.
O valor de retorno é Patch o rexistro que modificou ou creou. Se creou un rexistro, o valor de volta pode incluír propiedades que a fonte de datos xerou automaticamente. Non obstante, o valor devolto non proporciona un valor para os campos dunha táboa relacionada.
Por exemplo, vostede usa Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name")); e logo MyAccount.'Primary Contact'.'Full Name'. Non pode obter un nome completo neste caso. Pola contra, para acceder aos campos dunha táboa relacionada, use unha busca independente como:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Ao actualizar unha fonte de datos, poden xurdir un ou máis problemas. Use IfError e IsError co valor de retorno de para detectar e responder aos erros, como describe o manexo de Patch erros. Tamén pode usar a función Errors para identificar e examinar cuestións, como Traballar con fontes de datos describe.
As funcións relacionadas inclúen a función Update para substituír un rexistro enteiro e a función Collect para crear un rexistro. Use a función UpdateIf para modificar propiedades específicas de varios rexistros en función dunha condición.
Modificar ou crear un conxunto de rexistros nunha orixe de datos
Patch Tamén se pode usar para crear ou modificar varios rexistros cunha soa chamada.
En lugar de pasar un único rexistro base, pódese proporcionar unha táboa de rexistros base no segundo argumento. Os rexistros de cambios tamén se indican nunha táboa, correspondendo un por un cos rexistros base. O número de rexistros en cada táboa de cambios debe ser o mesmo que o número de rexistros na táboa base.
Cando se usa Patch deste xeito, o valor de retorno tamén é unha táboa con cada rexistro correspondente un por un cos rexistros base e de cambio.
Combinar rexistros fóra dunha orixe de datos
Especifique dous ou máis rexistros que desexa fusionar. Os rexistros son procesados en orde dende o comezo da lista de argumentos ata o final, os valores de propiedades posteriores anulan aos anteriores.
Patch Devolve o rexistro fusionado e non modifica os seus argumentos ou rexistros en ningunha fonte de datos.
Sintaxe
Modificar ou crear un rexistro nunha orixe de datos
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, ... ])
- DataSource – Obrigatorio. A orixe de datos que contén o rexistro que desexa modificar ou conterá o rexistro que desexa crear.
- BaseRecord – Obrigatorio. O rexistro que se vai modificar ou crear. Se o rexistro procedía dunha orixe de datos, o rexistro é atopado e modificado. Se o resultado de Defaults se usa, créase un rexistro. O DataSource da instrución patch e o DataSource da función Defaults deben coincidir para crear un novo rexistro.
- ChangeRecords – Obrigatorio. Un ou máis rexistros que conteñen propiedades para modificar no BaseRecord. Os rexistros de cambios son procesados en orde dende o comezo da lista de argumentos ata o final, os valores de propiedades posteriores anulan aos anteriores.
Modificar ou crear un conxunto de rexistros nunha orixe de datos
Patch( DataSource, BaseRecordsTable, ChangeRecordTable1 [, ChangeRecordTable2, ... ] )
- DataSource – Obrigatorio. A orixe de datos que contén os rexistros que desexa modificar ou conterá os rexistros que desexa crear.
- BaseRecordTable – Obrigatorio. Unha táboa de rexistros para modificar ou crear. Se o rexistro procedía dunha orixe de datos, o rexistro é atopado e modificado. Se o resultado de Defaults se usa, créase un rexistro. O DataSource da instrución patch e o DataSource da función Defaults deben coincidir para crear un novo rexistro.
- ChangeRecordTables – Obrigatorio. Unha ou varias táboas de rexistros que conteñen propiedades que se vab modificar para cada rexistro de BaseRecordTable. Os rexistros de cambios son procesados en orde dende o comezo da lista de argumentos ata o final, os valores de propiedades posteriores anulan aos anteriores.
Combinar rexistros
Patch( Record1, Record2 [, ...] )
- Rexistros - Obrigatorio. Seleccione polo menos dous rexistros que desexe combinar. Os rexistros son procesados en orde dende o comezo da lista de argumentos ata o final, os valores de propiedades posteriores anulan aos anteriores.
Exemplos
Modificar ou crear un rexistro (nunha orixe de datos)
Nestes exemplos, modificará ou creará un rexistro nunha orixe de datos, chamada IceCream, que contén os datos desta táboa e xera automaticamente os valores na columnaID:
| Fórmula | Descripción | Resultado |
|---|---|---|
|
Patch( Xeado, LookUp( Xeado, Sabor = "Chocolate" ), { Cantidade: 400 } ) |
Modifica un rexistro na orixe de datos IceCream:
|
{ ID: 1, Sabor: "Chocolate", Cantidade: 400 } A entrada Chocolate na orixe de datos IceCream modificouse. |
| Patch( IceCream, Defaults( IceCream ), { Flavor: "Strawberry" } ) | Crea un rexistro na orixe de datos IceCream:
|
{ ID: 3, Sabor: "Amorodo", Cantidade: 0 } A entrada Strawberry na orixe de datos IceCream creouse. |
Despois de avaliar as fórmulas anteriores, a orixe de datos remata con estes valores:
Combinar rexistros (fóra dunha orixe de datos)
| Fórmula | Descripción | Resultado |
|---|---|---|
| Patch( { Nome: "James", Puntuación: 90 }, { Nome: "Jim", Pasado: verdadeiro } ) | Combina dous rexistros fóra dunha orixe de datos:
|
{ Nome: "Jim", Puntuación: 90, Pasado: verdadeiro } |
Uso de Como ou Esterexistro
Usar a palabra clave Como ou Esterexistro na fórmula evita un contexto de avaliación ambiguo.
No seguinte exemplo, considere a primeira busca na declaración If.
(OrderID = A[@OrderID]) espérase que compare o OrderId no ámbito de busca co OrderId de colección A no ForAll ámbito. Neste caso, é probable que queira que se resolva A[@OrderId] como parámetro local. Pero é ambiguo.
Power Apps actualmente interpreta o OrderId esquerdo e o A[@OrderId] dereito como campo no ámbito de busca. Polo tanto, a busca sempre atopará a primeira fila en [dbo].[Orders1] porque a condición sempre é true (é dicir, o OrderId de calquera fila é igual a si mesmo).
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"
}
)
)
)
Uso de Como ou Esterexistro
Sempre que sexa posible, use o operador Como ou Esterexistro para distinguir o lado esquerdo. As recoméndase para o escenario anterior.
Cando a fórmula usa varios ámbitos con ForAll, Filter e Lookup na mesma orixe de datos ou táboa, é posible que os parámetros de ámbito poidan chocar cun mesmo campo noutros lugares. Polo tanto, recoméndase usar o operador Como ou Este rexistro para resolver o nome do campo e evitar ambigüidades.
Por exemplo, pode usar o operador Como para distinguir no seguinte exemplo.
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"
}
)
)
)
Tamén pode usar Esterexistro co mesmo propósito.
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"
}
)
)
)
Para obter máis información sobre o uso do operador Como e Esterexistro, consulte o artigo Operadores.