Delen via


Update en UpdateIf functies

Van toepassing op: Modelgestuurde apps voor canvas-apps

Werken records in een gegevensbron bij.

Omschrijving

Update functie

Gebruik de Update functie om een hele record in een gegevensbron te vervangen. De functies Patch wijzigen daarentegen UpdateIf een of meer waarden in een record, waardoor de andere waarden alleen blijven.

Voor een verzameling moet de hele record overeenkomen. Verzamelingen staan dubbele records toe, waardoor mogelijk meerdere records overeenkomen. U kunt het argument RemoveFlags.All gebruiken om alle exemplaren van een record bij te werken. Anders wordt slechts één exemplaar van de record bijgewerkt.

Als in de gegevensbron de waarde van een kolom automatisch wordt gegenereerd, moet de waarde van die kolom automatisch opnieuw worden bevestigd.

UpdateIf functie

Gebruik de UpdateIf functie om een of meer waarden te wijzigen in een of meer records die overeenkomen met een of meer voorwaarden. De voorwaarde kan elke formule zijn die resulteert in true of false en kan verwijzen naar kolommen in de gegevensbron, waarbij de naam van de kolom wordt gebruikt. De functie evalueert de voorwaarde voor elke record en wijzigt elk record die het resultaat true oplevert.

Als u een wijziging wilt opgeven, gebruikt u een wijzigingsrecord die nieuwe eigenschapswaarden bevat. Als u deze wijzigingsrecord inline opgeeft tussen accolades, kunnen eigenschapsformules verwijzen naar eigenschappen van de record die wordt gewijzigd. U kunt dit gedrag gebruiken om records te wijzigen op basis van een formule.

Net als UpdateIfbij , kunt u ook de functie Patch gebruiken om specifieke kolommen van een record te wijzigen zonder dat dit van invloed is op andere kolommen.

Beide Update en UpdateIf retourneren de gewijzigde gegevensbron als een tabel. U moet beide functies gebruiken in een gedragsformule.

Delegering

Deze functies delegeren niet aan een gegevensbron. UpdateIf En RemoveIf werkt echter lokaal om delegering te simuleren tot een limiet van 500/2000 records. Ze brengen records geleidelijk omlaag boven de limiet voor niet-delegatie van 500/2000 records. Records die voldoen aan de if-voorwaarde worden verzameld. Over het algemeen worden maximaal 500/2000 records afzonderlijk verzameld en vervolgens gewijzigd per uitvoering. Er kunnen echter meer records worden bijgewerkt als de bestaande lokale gegevenscache groot is, omdat de functie mogelijk toegang heeft tot meer records voor evaluatie. Alleen het eerste gedeelte van de gegevensbron wordt opgehaald en vervolgens wordt de functie toegepast. Dit vertegenwoordigt mogelijk niet de volledige afbeelding. Er kan een waarschuwing worden weergegeven tijdens het ontwerpen om u eraan te herinneren dat deze beperking geldt.

Syntaxis

Update(DataSource_, OldRecord, NewRecord [, RemoveFlags.All ] )

  • DataSource - Vereist. De gegevensbron met de records die u wilt vervangen.
  • OudeRecord - vereist. De record die moet worden vervangen.
  • NieuweRecord - vereist. De vervangende record. Dit is geen wijzigingsrecord. De hele record wordt vervangen en ontbrekende eigenschappen bevatten lege eigenschappen.
  • RemoveFlags.All: optioneel. In een verzameling kan een record meerdere keren voorkomen. U kunt het argument RemoveFlags.All opgeven als u alle kopieën van de record wilt bijwerken.

UpdateIf(DataSource_, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource - Vereist. De gegevensbron met de record of records die u wilt wijzigen.
  • Voorwaarden – vereist. Een formule die evalueert als true voor de records die u wilt wijzigen. U kunt kolomnamen uit de DataSource gebruiken in de formule. Als er meerdere voorwaarden worden doorgegeven, wordt alleen de ChangeRecord toegepast die is gerelateerd aan de eerste voorwaarde die waar oplevert.
  • ChangeRecord(s) - Vereist. Voor elke overeenkomstige voorwaarde moet u een wijzigingsrecord toevoegen met nieuwe eigenschapswaarden, die u wilt laten toepassen op records in de DataSource die voldoen aan de voorwaarde. Als u de record inline opgeeft tussen accolades, kunnen eigenschapswaarden van de bestaande record in de eigenschapsformules worden gebruikt.

Voorbeelden

In deze voorbeelden vervangt of wijzigt u records in een gegevensbron genaamd IceCream die begint met de gegevens in deze tabel:

IJsvoorbeeld.

Formule Omschrijving Resultaat
Update( IJs,
LookUp( IJs, Smaak="Chocolade" ), { ID: 1, Smaak: "Munt chocolade", Hoeveelheid:150 } )
Vervangt een record uit de gegevensbron. Een record vervangen.

De gegevensbron IceCream is gewijzigd.
UpdateIf( IJs, Hoeveelheid > 175, { Hoeveelheid: Hoeveelheid + 10 } ) Hiermee wijzigt u records waarvan Aantal groter is dan 175. Het veld Aantal wordt met 10 verhoogd en er worden geen andere velden gewijzigd. Records wijzigen.

De gegevensbron IceCream is gewijzigd.
Update( IJs,
LookUp( IJs, Smaak="Aardbeien" ),
{ ID: 3, Smaak: "Aardbeienwirl"} )
Vervangt een record uit de gegevensbron. De eigenschap Quantity is niet opgegeven in de vervangende record, zodat deze eigenschap leeg is in het resultaat. Record vervangen wanneer hoeveelheid niet is opgegeven.

De gegevensbron IceCream is gewijzigd.
UpdateIf( IJs, waar, { Hoeveelheid: 0 } ) Hiermee stelt u de waarde van de eigenschap Quantity voor alle records in de gegevensbron in op 0. De hoeveelheid voor iedere optie instellen op 0.

De gegevensbron IceCream is gewijzigd.

Stapsgewijs

  1. Importeer of maak een verzameling met de naam Inventaris en geef deze weer in een galerie, zoals wordt beschreven in Gegevens weergeven in een galerie.

  2. Noem de galerie Productgalerie.

  3. Voeg een schuifregelaar genaamd UnitsSold toe en stel de eigenschap Max in op deze expressie:
    Productgalerie.Selected.EenhedenOpVoorraad

  4. Voeg een knop toe en stel de bijbehorende eigenschap OnSelect in op deze formule:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Druk op F5, selecteer een product in de galerie, geef een waarde op met behulp van de schuifregelaar en selecteer vervolgens de knop.

    Het aantal eenheden op voorraad voor het opgegeven product wordt verlaagd met het opgegeven aantal.