Als u andere programmeerprogramma's zoals Visual Basic of JavaScript hebt gebruikt, vraagt u zich misschien het volgende af: waar zijn de variabelen? PowerApps is iets anders, en er is ook een andere benadering voor nodig. In plaats van dat u een variabele gebruikt, moet u zich afvragen: wat zou ik doen in Excel?

In andere hulpprogramma's hebt u mogelijk expliciet een berekening uitgevoerd en het resultaat opgeslagen in een variabele. In PowerApps en Excel worden formules echter automatisch opnieuw berekend wanneer de invoergegevens worden gewijzigd, dus is het doorgaans niet nodig om variabelen te maken en bij te werken. Als u deze benadering zo vaak mogelijk gebruikt, wordt het eenvoudiger om uw app te maken, begrijpen en onderhouden.

In sommige gevallen moet u variabelen gebruiken in PowerApps. Hiermee wordt het Excel-model uitgebreid door gedragsformules toe te voegen. Deze formules worden uitgevoerd wanneer een gebruiker bijvoorbeeld een knop selecteert. Binnen een gedragsformule is het vaak nuttig om een variabele in te stellen voor gebruik in andere formules.

Over het algemeen is het beter om het gebruik van variabelen te vermijden. Toch is het gewenste resultaat soms alleen mogelijk met een variabele.

Excel vertalen naar PowerApps

Excel

Laten we bekijken hoe Excel werkt. Een cel kan een waarde bevatten, zoals een getal of een tekenreeks, of een formule die is gebaseerd op de waarden van andere cellen. Nadat de gebruiker een andere waarde in een cel heeft ingevoerd, worden eventuele formules die afhankelijk zijn van de nieuwe waarde opnieuw berekend. Voor dit gedrag hoeft u niets te programmeren.

Excel beschikt niet over variabelen. De waarde van een cel met een formule wordt gewijzigd op basis van de invoer, maar er is geen manier om het resultaat van een formule te onthouden en op te slaan in een cel of ergens anders. Als u de waarde van een cel wijzigt, wordt mogelijk het hele werkblad gewijzigd en gaan eerder berekende waarden verloren. Gebruikers van Excel kunnen cellen kopiëren en plakken, maar dit moet handmatig worden gedaan en is niet mogelijk met formules.

PowerApps

Apps die u in PowerApps maakt, hebben een werking die lijkt op die van Excel. In plaats van cellen bij te werken, kunt u waar u maar wilt op het scherm besturingselementen toevoegen en deze een naam geven om in formules te gebruiken.

U kunt het Excel-gedrag bijvoorbeeld repliceren in een app door een besturingselement Label met de naam Tekstvak1 en twee besturingselementen Tekstinvoer met de namen Tekstinvoer1 en Tekstinvoer2 toe te voegen. Als u vervolgens de teksteigenschap van Tekstvak1 instelt op Tekstinvoer1 + Tekstinvoer2, wordt altijd automatisch de som van de getallen in Tekstinvoer1 en Tekstinvoer2 weergegeven.

Het besturingselement Tekstvak1 is geselecteerd met de tekstformule in de formulebalk bovenaan het scherm. Hier zien we de formule Tekstinvoer1 + Tekstinvoer2. Deze formule maakt een afhankelijkheid tussen deze besturingselementen, net zoals er afhankelijkheden worden gemaakt tussen de cellen in een Excel-werkmap. Laten we de waarde van Tekstinvoer1 wijzigen:

De formule voor Tekstvak1 is automatisch herberekend. De nieuwe waarde wordt nu weergegeven.

U kunt in PowerApps formules niet alleen gebruiken om de primaire waarde van een besturingselement te bepalen, maar ook de eigenschappen, zoals de opmaak. In het volgende voorbeeld worden met een formule voor de eigenschap Color van het label negatieve waarden automatisch rood weergegeven. De Als-functie ziet er waarschijnlijk bekend uit van Excel:
Als( Waarde(Tekstvak1.Tekst) < 0, Rood, Zwart )

Als het resultaat van onze berekening in Tekstvak1.Tekst negatief is, wordt het getal rood weergegeven:

U kunt formules gebruiken voor een groot aantal scenario's:

  • Door de GPS-functie van uw apparaat te gebruiken, kan een besturingselement voor kaarten en een formule die gebruikmaakt van Location.Latitude en Location.Longitude uw huidige locatie weergeven. Op de kaart wordt automatisch uw locatie bijgehouden terwijl u zich verplaatst.
  • Andere gebruikers kunnen gegevensbronnen bijwerken. Anderen in uw team kunnen bijvoorbeeld items in een SharePoint-lijst bijwerken. Wanneer u een gegevensbron vernieuwt, worden eventuele afhankelijke formules automatisch opnieuw berekend om de bijgewerkte gegevens weer te geven. In het voorbeeld kunt u ook een itemeigenschap uit de galerie aan de formule Filter (SharePointList) toevoegen. Deze geeft automatisch de nieuwe gefilterde set records weer.

Voordelen

Het gebruik van formules om apps te bouwen biedt veel voordelen:

  • Als u Excel kent, kent u PowerApps. Het model en de formuletaal zijn hetzelfde.
  • Als u andere programmeerprogramma's hebt gebruikt, weet u misschien hoeveel code u voor deze voorbeelden nodig zou hebben. In Visual Basic zou u een gebeurtenis-handler moeten schrijven voor de wijzigingsgebeurtenis op elk besturingselement voor tekstinvoer. De code voor het uitvoeren van de berekeningen is overbodig en zou mogelijk niet meer gesynchroniseerd zijn, of u zou een algemene subroutine moeten schrijven. In PowerApps bereikt u dit met een enkele formule die uit één regel bestaan.
  • Om te weten waar de tekst in Tekstvak1 vandaan komt, weet u precies wat u moet bekijken: de formule in de teksteigenschap. Er is geen andere manier om de tekst van dit besturingselement te beïnvloeden. In een traditioneel programmeerprogramma kan elke gebeurtenis-handler of subroutine de waarde van het label waar dan ook in het programma wijzigen. Hierdoor kan het lastiger worden om te bepalen waar en wanneer een variabele is gewijzigd.
  • Als gebruikers een schuifregelaar aanpassen en vervolgens van gedachten veranderen, kunnen ze de schuifregelaar terugzetten naar de oorspronkelijke waarde. Het is dan alsof er nooit iets is gebeurd: de app bevat dezelfde besturingselementwaarden als voorheen. Het heeft geen gevolgen om te experimenteren en u af te vragen 'wat als', net als in Excel.

Over het algemeen is het handiger om een effect te bewerkstelligen met behulp van een formule. Laat de formule-engine in PowerApps het werk voor u doen.

Weten wanneer u variabelen gebruikt

Laten we eens proberen hoe het werkt als we een eenvoudige optelsom willen om een voorlopig totaal te krijgen. Als u een knop Toevoegen selecteert, voegt u een getal toe aan het voorlopige totaal. Als u een knop Wissen selecteert, zet u het voorlopige totaal op nul.

Voor onze optelsom wordt iets gebruikt dat niet bestaat in Excel: een knop. In deze app is het niet mogelijk om alleen formules te gebruiken om het voorlopige totaal te berekenen, omdat de waarde ervan afhankelijk is van een reeks acties die door de gebruiker wordt uitgevoerd. In plaats daarvan moet het voorlopige totaal worden geregistreerd en handmatig worden bijgewerkt. In de meeste programmeerprogramma's worden deze gegevens opslagen in een variabele.

Soms hebt u een variabele nodig om uw app naar wens te laten werken. Maar er geldt nog enig voorbehoud voor deze benadering:

  • Het voorlopige totaal moet handmatig worden bijgewerkt. Het wordt niet automatisch herberekend.
  • Het voorlopige totaal kan niet meer worden berekend op basis van de waarden van andere besturingselementen. Dit is afhankelijk van hoe vaak de gebruiker de knop Toevoegen heeft geselecteerd en welke waarde er elke keer in het besturingselement voor tekstinvoer was ingevuld. Heeft de gebruiker 77 ingevoerd en twee keer Toevoegen geselecteerd of is er 24 en 130 opgegeven voor elke toevoeging? Dat weet u niet als het totaal op 154 staat.
  • Wijzigingen in het totaal kunnen op meerdere manieren tot stand zijn gekomen. In dit voorbeeld wordt het totaal bijgewerkt aan de hand van de knop Toevoegen en de knop Wissen. Welke knop veroorzaakt het probleem als de app niet naar verwachting functioneert?

Een contextvariabele maken

Om onze optelsom te maken, hebben we een variabele nodig voor het voorlopige totaal. De eenvoudigste variabelen in PowerApps zijn contextvariabelen.

Hoe contextvariabelen werken:

  • Contextvariabelen kunt u maken en instellen met behulp van de functie UpdateContext. Als een contextvariabele nog niet bestaat tijdens de eerste update, wordt deze gemaakt met de standaardwaarde leeg.
  • Contextvariabelen kunt u maken en instellen met records. In andere programmeerprogramma's gebruikt u doorgaans "=" voor toewijzingen, zoals in "x = 1". Voor contextvariabelen gebruikt u in plaats daarvan {x: 1}. Wanneer u een contextvariabele gebruikt, gebruikt u meteen de naam ervan.
  • U kunt een contextvariabele ook instellen wanneer er een scherm weergegeven, met behulp van de functie Navigate. Als u een scherm als een soort procedure of subroutine beschouwt, is dit vergelijkbaar met de parameter die wordt doorgegeven in andere programmeerprogramma's.
  • Behalve voor Navigate zijn contextvariabelen beperkt tot de context van een enkel scherm. Vandaar de naam. Het is niet mogelijk om ze buiten deze context te gebruiken of in te stellen.
  • Contextvariabelen kunnen uit een willekeurige waarde bestaan, waaronder tekenreeksen, getallen, records en tabellen.
  • Wanneer de gebruiker een app sluit, gaan alle contextvariabelen verloren.

Laten we onze optelsom opnieuw bouwen met een contextvariabele:

  1. Voeg een tekstinvoerbesturingselement met de naam Tekstinvoer1 en twee knoppen met de naam Knop1 en Knop2 toe.

  2. Stel de teksteigenschap van Knop1 in op "Toevoegen" en stel de teksteigenschap van Knop2 in op "Wissen".

  3. Als het voorlopige totaal moet worden bijgewerkt wanneer een gebruiker de knop Toevoegen selecteert, stelt u de eigenschap OnSelect in op deze formule:
    UpdateContext( { RunningTotal: RunningTotal + Text1 } ).

    De eerste keer dat de gebruiker de knop Toevoegen selecteert en UpdateContext wordt aangeroepen, wordt RunningTotal gemaakt met de standaardwaarde leeg. Dit wordt beschouwd als een nul.

  4. Om het voorlopige totaal in te stellen op 0 wanneer de gebruiker de knop Wissen selecteert, stelt u de eigenschap OnSelect in op deze formule:
    UpdateContext( { RunningTotal: 0 } )

    UpdateContext wordt opnieuw gebruikt met de formule UpdateContext( { RunningTotal: 0 } ).

  5. Voeg een besturingselement Label toe en stel de eigenschap Text ervan in op RunningTotal.

    Deze formule wordt automatisch opnieuw berekend en de waarde van RunningTotal wordt weergegeven op basis van de knoppen die de gebruiker selecteert.

  6. Bekijk een voorbeeld van de app. U ziet de optelfunctie zoals hierboven is beschreven.

Een verzameling maken

Als u vanuit een scherm naar een variabele wilt verwijzen (niet alleen vanuit het scherm waarin de variabele is gemaakt), gebruikt u een verzameling voor een globale variabele.

Hoe verzamelingen werken:

  • Verzamelingen kunt u maken en instellen met behulp van de functie ClearCollect. U kunt in plaats daarvan de functie Collect gebruiken, maar hiervoor is een andere variabele nodig; de oude kan niet worden vervangen.
  • Een verzameling is een gegevensbron en daarom een tabel. Voor toegang tot een enkele waarde in een verzameling gebruikt u de functie First en extraheert u één veld uit de resulterende record. Als u één waarde hebt gebruikt met ClearCollect, wordt dit het veld Value, zoals in dit voorbeeld:
    First( VariableName ).Value
  • Elke formule heeft toegang tot een verzameling vanuit elk scherm in de app.
  • Wanneer een gebruiker een app sluit, worden alle bijbehorende verzamelingen leeggemaakt.

Laten we onze optelsom opnieuw maken met behulp van een verzameling:

  1. Voeg een tekstinvoerbesturingselement met de naam Tekstinvoer1 en twee knoppen met de naam Knop1 en Knop2 toe.

  2. Stel de teksteigenschap van Knop1 in op "Toevoegen" en stel de teksteigenschap van Knop2 in op "Wissen".

  3. Als het voorlopige totaal moet worden bijgewerkt wanneer een gebruiker de knop Toevoegen selecteert, stelt u de eigenschap OnSelect in op deze formule:
    ClearCollect( RunningTotal, First( RunningTotal ).Value + TextInput1 )

    Door ClearCollect met één waarde te gebruiken, wordt er een record gemaakt in de verzameling met één veld Waarde. De eerste keer dat de gebruiker de knop Toevoegen selecteert en ClearCollect wordt aangeroepen, is RunningTotal leeg. Bovendien wordt Eerste leeg geretourneerd en wordt dit beschouwd als een nul.

  4. Om het voorlopige totaal in te stellen op 0 wanneer een gebruiker de knop Wissen selecteert, stelt u de eigenschap OnSelect in op deze formule:
    ClearCollect( RunningTotal, 0 )

    Ook hier wordt ClearCollect gebruikt met de formule ClearCollect( RunningTotal, 0 ).

  5. Als u het voorlopige totaal wilt weergeven, voegt u een label toe en stelt u de eigenschap Text ervan in op deze formule:
    First(RunningTotal).Value

    Deze formule extraheert het veld Waarde van de eerste record van de verzameling RunningTotal. De waarde van RunningTotal wordt automatisch weergegeven in het label op basis van de knoppen die de gebruiker selecteert.

  6. Als u de optelsom wilt uitvoeren, drukt u op F5 om het voorbeeld te openen, voert u in het tekstinvoerbesturingselement getallen in en selecteert u knoppen.

  7. Druk op Esc om terug te gaan naar de standaardwerkruimte.

  8. Als u de waarden in uw verzameling wilt bekijken, selecteert u Verzamelingen in het menu Bestand.