De functies Update en UpdateIf
Van toepassing op: Canvas-apps Modelgestuurde apps
Werken records in een gegevensbron bij.
Omschrijving
De functie Update
Gebruik de functie Update om een volledige record in een gegevensbron te vervangen. De functies UpdateIf en Patch wijzigen daarentegen een of meer waarden in een record, waarbij de andere waarden ongewijzigd 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.
De functie UpdateIf
Gebruik de functie UpdateIf om een of meer waarden te wijzigen in een of meer records die voldoen aan 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 UpdateIf kunt u ook de functie Patch gebruiken om specifieke kolommen in een record te wijzigen zonder dat dit van invloed is op andere kolommen.
Update en UpdateIf retourneren de gewijzigde gegevensbron als een tabel. U moet beide functies gebruiken in een gedragsformule.
Delegering
Als deze functies worden gebruikt met een gegevensbron, kunnen ze niet worden overgedragen. Alleen het eerste deel van de gegevensbron wordt opgehaald en vervolgens wordt de functie toegepast. Dit is mogelijk niet het volledige verhaal. Er kan tijdens het schrijven een waarschuwing verschijnen om u aan deze beperking te herinneren.
Delegeringsondersteuning
Alleen sommige gegevensbronnen ondersteunen UpdateIf. Als een gegevensbron deze functie niet ondersteunt, stuurt Power Apps nu een query naar de server en worden alle gegevens opgehaald die overeenkomen met de filterexpressie, tot een maximum van 500 of 2000 of de gegevenspaginagrootte. Vervolgens worden die records bijgewerkt en worden ze allemaal teruggestuurd naar de server om te worden bijgewerkt.
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 zijn leeg.
- 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, Voorwaarde1, Wijzigingsrecord1 [, Voorwaarde2, Wijzigingsrecord2, ... ] )
- DataSource - Vereist. De gegevensbron met de record of records die u wilt wijzigen.
- Voorwaarde(n) - vereist. Een formule die evalueert als true voor de records die u wilt wijzigen. U kunt kolomnamen uit de DataSource gebruiken in de formule.
- 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:
Formule | Beschrijving | Resultaat |
---|---|---|
Update( IceCream, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Vervangt een record uit de gegevensbron. | De gegevensbron IceCream is gewijzigd. |
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 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. | De gegevensbron IceCream is gewijzigd. |
Update( IceCream, First( Filter( IceCream, Flavor="Strawberry" ) ), { ID: 3, Flavor: "Strawberry Swirl"} ) |
Vervangt een record uit de gegevensbron. De eigenschap Quantity is niet opgegeven in de vervangende record, zodat deze eigenschap leeg is in het resultaat. | De gegevensbron IceCream is gewijzigd. |
UpdateIf( IceCream, true, { Quantity: 0 } ) | Hiermee stelt u de waarde van de eigenschap Quantity voor alle records in de gegevensbron in op 0. | De gegevensbron IceCream is gewijzigd. |
Stapsgewijs
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.
Noem de galerie Productgalerie.
Voeg een schuifregelaar genaamd UnitsSold toe en stel de eigenschap Max in op deze expressie:
Productgalerie.Selected.EenhedenOpVoorraadVoeg een knop toe en stel de bijbehorende eigenschap OnSelect in op deze formule:
UpdateIf(Voorraad, Productnaam = Productgalerie.Selected.Productnaam, {UnitsInStock:UnitsInStock-UnitsSold.Value})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.