Comparteix via


Update i UpdateIf funcions

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

Actualitza els registres d'una font de dades.

Descripció

Update funció

Utilitzeu la Update funció per substituir un registre sencer en una font de dades. En canvi, les UpdateIf funcions i Patch modifiquen un o més valors d'un registre, deixant els altres 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.

UpdateIf funció

Utilitzeu la UpdateIf funció per modificar un o més valors d'un o més registres que coincideixin amb una o més 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 similar a UpdateIf, també podeu utilitzar la funció Patch per canviar columnes específiques d'un registre sense afectar altres columnes.

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

Delegació

Aquestes funcions no es deleguen a una font de dades. No obstant això, UpdateIf i RemoveIf funcionen localment per simular la delegació fins a un límit de 500/2000 registres. Redueixen progressivament els registres més enllà del límit de no delegació de 500/2000 registres. Es recullen els registres que compleixen la condició Si. Generalment, un màxim de 500/2000 registres es recullen per separat i després es modifiquen per execució. No obstant això, es poden actualitzar més registres si la memòria cau de dades local existent és gran, ja que la funció pot tenir accés a més registres per a l'avaluació. Només es recuperarà la part inicial de la font de dades i després s'aplicarà la funció. És possible que això no representi la imatge completa. Pot aparèixer un advertiment durant l'elaboració per recordar-vos aquesta limitació.

Sintaxi

Update(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. Es substitueix tot el registre i les propietats que falten contenen 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, CanviRecord1 [, Condició2, CanviRecord2, ... ] )

  • DataSource : obligatori. La font de dades que conté el registre o els registres que voleu modificar.
  • Condicions – Obligatòries. 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. En cas que se passin diverses condicions , només s'aplica el ChangeRecord relacionat amb la primera condició que s'avalua com a true .
  • ChangeRecords : 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,
LookUp( IceCream, Flavor="Chocolate" ), { ID: 1, Flavor: "Mint Chocolate", 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,
LookUp( Gelat, Sabor = "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. Substitueix el registre quan no s'ha subministrat la quantitat.

S'ha modificat la font de dades Gelat.
UpdateIf( Gelat, cert, { Quantitat: 0 } ) Defineix el valor de la propietat Quantitat per a tots els registres de la font de dades com a 0. Establiu la quantitat per a tots 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.