Funcions Update i UpdateIf

S'aplica a: Aplicacions del llenç Aplicacions basades en models

Actualitza els registres d'una font de dades.

Descripció

Funció Update

Utilitzeu la funció Update per substituir un registre sencer d'una font de dades. En canvi, les funcions UpdateIf i Patch modifiquen un o diversos valors d'un registre i deixen la resta de valors sols.

Per a una col·lecció, ha de coincidir amb tot el registre. Les col·leccions permeten duplicar registres, de manera que diversos registres poden coincidir. Podeu utilitzar l'argument RemoveFlags.All per actualitzar totes les còpies d'un registre; en cas contrari, només s'actualitzarà una còpia del registre.

Si la font de dades genera el valor d'una columna automàticament, el valor de la columna s'ha de tornar a afirmar.

Funció UpdateIf

Utilitzeu la funció UpdateIf per modificar un o més valors d'un o diversos registres que coincideixin amb una o diverses condicions. La condició pot ser qualsevol fórmula que resulti en true o false i pot fer referència a les columnes de la font de dades per nom. La funció avalua la condició per a cada registre i modifica qualsevol registre per al qual el resultat és true.

Per especificar una modificació, utilitzeu un registre de canvi que contingui valors de propietat nous. Si proporcioneu aquest registre de canvi en línia entre claus, les fórmules de propietat poden fer referència a propietats del registre que es modifica. Podeu utilitzar aquest comportament per modificar els registres en funció d'una fórmula.

De manera semblant a UpdateIf, també podeu utilitzar la funció Patch per canviar columnes específiques d'un registre sense afectar altres columnes.

Update i UpdateIf tornen la font de dades modificada com a taula. Heu d'utilitzar les funcions en una fórmula de comportament.

Delegació

Quan s'utilitza amb un font de dades, aquestes funcions no es poden delegar. Només es recuperarà la primera part de la font de dades i, a continuació, s'aplicarà la funció. Pot ser que això no representi la història completa. És possible que aparegui un advertiment en el moment de la creació per recordar-vos aquesta limitació.

Suport a la delegació (Experimental)

El suport de delegació per a UpdateIf i RemoveIf ara es troba a Experimental Preview (OFF per defecte) per a les fonts de dades que ho admeten. Si un font de dades no admet aquesta característica, ara enviarà una consulta al servidor i recuperarà totes les dades que coincideixin amb l'expressió del filtre fins al màxim de 500, Power Apps 2000 o la mida de la pàgina de dades. A continuació, actualitzarà aquests registres i els enviarà de nou al servidor per actualitzar-los.

Sintaxi

Actualització (DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )

  • DataSource: obligatori. La font de dades que conté el registre que voleu substituir.
  • OldRecord: obligatori. El registre que se substituirà.
  • NewRecord: obligatori. El registre de substitució. No és un registre de canvi. El registre sencer se substituirà i les propietats que falten quedaran en blanc.
  • RemoveFlags.All - Opcional. En una col·lecció, pot ser que el mateix registre es mostri més d'una vegada. Especifiqueu l'argument RemoveFlags.All per actualitzar totes les còpies del registre.

UpdateIf(DataSource, Condició1, ChangeRecord1, [Condició2, ChangeRecord2, ...])

  • DataSource: obligatori. La font de dades que conté el registre o els registres que voleu modificar.
  • Condicions: obligatori. Fórmula que s'avalua com a true per al registre o registres que voleu modificar. Podeu utilitzar els noms de columna de DataSource de la fórmula.
  • ChangeRecord: obligatori. Per a cada condició corresponent, un registre de canvi dels valors de propietat nous per aplicar als registres de DataSource que compleixen la condició. Si proporcioneu el registre en línia entre claus, els valors de propietat del registre existent es poden utilitzar a les fórmules de propietat.

Exemples

En aquests exemples, substituireu o modificareu registres d'una font de dades anomenada Gelat i que s'inicia amb les dades d'aquesta taula:

Exemple de gelats

Fórmula Descripció Resultat
Update( Gelat,
First( Filter( Gelat, Gust="Xocolata" ) ), { ID: 1, Gust: "Nenta Xocolata", Quantitat:150 } )
Substitueix un registre de la font de dades. Substituïu un registre.

S'ha modificat la font de dades Gelat.
UpdateIf( Gelat, Quantitat > 175, { Quantitat: Quantitat + 10 } ) Modifica els registres que tenen una Quantitat superior a 175. El camp Quantitat s'incrementa en 10 i no es modifica cap altre camp. Modificar registres.

S'ha modificat la font de dades Gelat.
Update( Gelat,
First( Filter( Gelat, Gust="Maduixa" ) ),
{ ID: 3, Gust: "Remolí de maduixa"} )
Substitueix un registre de la font de dades. La propietat Quantitat no s'ha subministrat al registre de substitució, de manera que la propietat estarà en blanc al resultat. Substituïu el registre quan no s'hagi subministrat la quantitat.

S'ha modificat la font de dades Gelat.
UpdateIf( Gelat, true, { Quantitat: 0 } ) Defineix el valor de la propietat Quantitat per a tots els registres de la font de dades com a 0. Estableix la quantitat per a tot a 0.

S'ha modificat la font de dades Gelat.

Pas a pas

  1. Importeu o creeu una col·lecció anomenada Inventari i mostreu-la en una galeria tal com es descriu a Mostrar dades en una galeria.

  2. Anomeneu la galeria ProductGallery.

  3. Afegiu un control lliscant anomenat UnitsSold i definiu-ne la propietat Max en aquesta expressió:
    ProductGallery.Selected.UnitsInStock

  4. Afegiu un botó i definiu-ne la propietat OnSelect a aquesta fórmula:
    UpdateIf(Inventari, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Premeu F5, seleccioneu un producte a la galeria, especifiqueu un valor amb el control lliscant i, a continuació, seleccioneu el botó.

    Es resta la quantitat que heu especificat del nombre d'unitats en estoc per al producte que heu especificat.