De functies Blank, Coalesce, IsBlank en IsEmpty

Van toepassing op: Canvas-apps Bureaubladstromen Dataverse-formulekolommen Modelgestuurde apps Power Platform CLI

Deze functies testen of een waarde leeg is en of een tabel geen records bevat. Dit biedt een manier om lege waarden te maken.

Overzicht

Leeg is een tijdelijke aanduiding voor "geen waarde" of "onbekende waarde". Bijvoorbeeld voor het besturingselement Keuzelijst met invoervak is de eigenschap Selectedleeg als de gebruiker geen selectie heeft gemaakt. Veel gegevensbronnen kunnen NULL-waarden opslaan en retourneren. Deze worden in Power Apps weergegeven als leeg.

Elke eigenschap of berekende waarde in Power Apps kan leeg zijn. Een booleaanse waarde heeft bijvoorbeeld normaal een van de twee waarden: true of false. Maar naast deze twee waarden kan de waarde ook leeg zijn wat aangeeft dat de status niet bekend is. Dit is vergelijkbaar met Microsoft Excel, waar een werkbladcel in eerste instantie leeg is, maar onder andere de waarden TRUE of FALSE kan bevatten. De inhoud van de cel kan op elk gewenst moment worden gewist waardoor de cel weer de status leeg krijgt.

Lege tekenreeks verwijst naar een tekenreeks die geen tekens bevat. De Len-functie retourneert nul voor een dergelijke tekenreeks en kan in formules worden geschreven als twee dubbele aanhalingstekens met niets ertussenin "". Sommige besturingselementen en gegevensbronnen gebruiken een lege tekenreeks om aan te geven dat er geen waarde is. Met met de functies IsBlank en Coalesce wordt zowel op lege waarden als lege tekenreeksen getest om het maken van apps te vereenvoudigen.

In de context van de functie IsEmpty is leeg specifiek voor tabellen die geen records bevatten. De tabelstructuur is mogelijk intact, inclusief kolomnamen, maar de tabel bevat geen gegevens. Een tabel kan mogelijk in eerste instantie leeg zijn, vervolgens records bevatten en niet langer leeg zijn, waarna de records weer worden verwijderd en de tabel opnieuw leeg is.

Notitie

We zitten in een overgangsperiode. Tot nu toe is leeg ook gebruikt om fouten te rapporteren, waardoor het onmogelijk is om een geldige 'geen waarde' te kunnen onderscheiden van een fout. Dit is de reden dat het opslaan van lege waarden op dit moment alleen wordt ondersteund voor lokale verzamelingen. U kunt lege waarden opslaan in andere gegevensbronnen als u de experimentele functie Foutenbeheer op formuleniveau inschakelt onder Instellingen>Komende functies>Experimenteel. We werken actief aan het voltooien van deze functie en het aanbrengen van het juiste onderscheid tussen lege waarden en fouten.

Leeg

Van toepassing op: Canvas-apps Modelgestuurde apps Dataverse-formulekolommen

De functie Blank retourneert een lege waarde. Gebruik deze functie om een NULL-waarde op te slaan in een gegevensbron die ondersteuning biedt voor deze waarden, waardoor een eventuele waarde uit het veld wordt verwijderd.

IsBlank

Van toepassing op: Canvas-apps Modelgestuurde apps

Met de functie IsBlank wordt op een lege waarde of een lege tekenreeks getest. De test bevat lege tekenreeksen om het maken van apps te vergemakkelijken omdat sommige gegevensbronnen en besturingselementen een lege tekenreeks gebruiken wanneer er geen waarde aanwezig is. Gebruik if( Value = Blank(), ... in plaats van IsBlank om specifiek op een lege waarde te testen. De functie IsBlank beschouwt lege tabellen als niet-leeg, en IsEmpty moet worden gebruikt om een tabel te testen.

Overweeg, bij het inschakelen van foutafhandeling voor bestaande apps, IsBlank te vervangen door IsBlankOrError om bestaand appgedrag te behouden. Voorafgaand aan de toevoeging van foutafhandeling is een lege waarde gebruikt om zowel null-waarden uit databases als foutwaarden weer te geven. Foutafhandeling scheidt deze twee interpretaties van leeg die het gedrag kunnen veranderen van bestaande apps die IsBlank blijven gebruiken.

De retourwaarde voor IsBlank is de booleaanse waarde true of false.

Coalesce

Van toepassing op: Canvas-apps Modelgestuurde apps

Met de functie Coalesce worden de bijbehorende argumenten op volgorde geëvalueerd en wordt de eerste waarde die niet leeg is of een lege tekenreeks geretourneerd. Gebruik deze functie om een lege waarde of lege tekenreeks te vervangen door een andere waarde, maar niet niet-lege waarden en tekenreeksen ongewijzigd te laten. Als alle argumenten leeg zof lege tekenreeks zijn, retourneert de functie leeg, waarbij Coalesce een goede manier is om lege tekenreeksen te converteren naar waarden leeg.

Coalesce( value1, value2 ) is het beknoptere equivalent van If( Not IsBlank( value1 ), value1, Not IsBlank( value2 ), value2 ) en voor deze functie hoeven value1 en value2 niet twee keer te worden geëvalueerd. De functie If retourneert leeg als er geen 'else'-formule, is zoals hier het geval is.

Alle argumenten voor Coalesce moeten van hetzelfde type zijn. U kunt bijvoorbeeld geen getallen combineren met tekenreeksen. De retourwaarde van Coalesce is van dit veelvoorkomende type.

IsEmpty

Van toepassing op: Canvas-apps Modelgestuurde apps

De functie IsEmpty test of een tabel records bevat. Dit is gelijk aan het gebruik van de functie CountRows en het controleren op nul. U kunt controleren op fouten in een gegevensbron door IsEmpty te combineren met de functie Errors.

De retourwaarde voor IsEmpty is de booleaanse waarde true of false.

Syntaxis

Blank()

Coalesce( Waarde1 [, Waarde2, ... ] )

  • Value(s): vereist. Te testen waarden. Elke waarde wordt op volgorde geëvalueerd tot er een waarde wordt gevonden die niet leeg is en geen lege tekenreeks is. Waarden na dit punt worden niet geëvalueerd.

IsBlank( Waarde )

  • Value: vereist. Waarde om te testen op een lege waarde of lege tekenreeks.

IsEmpty( Table )

  • Table: vereist. Tabel om te testen op records.

Voorbeelden

Leeg

Notitie

Op dit moment is het volgende voorbeeld alleen van toepassing op lokale verzamelingen. U kunt lege waarden opslaan in andere gegevensbronnen als u de experimentele functie Foutenbeheer op formuleniveau inschakelt onder Instellingen>Komende functies>Experimenteel. We werken actief aan het voltooien van deze functie en het aanbrengen van het onderscheid tussen lege waarden en fouten.

  1. Maak een volledig nieuwe app en voeg een besturingselement van het type Button toe.

  2. Stel de eigenschap OnSelect van de knop in op deze formule:

    ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )
    
  3. Klik of tik op de knop die u hebt toegevoegd om een voorbeeld te bekijken van uw app en sluit vervolgens het voorbeeld.

  4. Klik of tik in het menu File op Collections.

    De verzameling Cities wordt weergegeven, met daarin één record met 'Seattle' en 'Rainy':

    Verzameling waarin als weer voor Seattle de optie Rainy wordt weergegeven.

  5. Klik of tik op de pijl naar links om terug te gaan naar de standaardwerkruimte.

  6. Voeg een besturingselement van het type Label toe en stel de eigenschap Text in op deze formule:

    IsBlank( First( Cities ).Weather )
    

    Het label heeft de status false, omdat het veld Weather een waarde bevat ('Rainy').

  7. Voeg een tweede knop toe en stel de eigenschap OnSelect ervan in op deze formule:

    Patch( Cities, First( Cities ), { Weather: Blank() } )
    
  8. Klik of tik op de knop die u hebt toegevoegd om een voorbeeld te bekijken van uw app en sluit vervolgens het voorbeeld.

    Het veld Weather van de eerste record in Cities is vervangen door een lege waarde, waardoor de waarde 'Rainy' die er eerst stond, is verwijderd.

    Verzameling met Seattle en het lege veld Weather.

    Het label heeft de status true, omdat het veld Weather geen waarde meer bevat.

Coalesce

Formule Beschrijving Resultaat
Coalesce( Blank(), 1 ) Deze functie test de geretourneerde waarde van de functie Blank en retourneert altijd een lege waarde. Omdat het eerste argument leeg is, wordt de evaluatie voortgezet met het volgende argument totdat een niet-lege waarde en een niet-lege tekenreeks is gevonden. 1
Coalesce( "", "2" ) Test het eerste argument dat een lege tekenreeks is. Omdat het eerste argument een lege tekenreeks is, gaat de evaluatie door met het volgende argument totdat er een niet-lege waarde en een niet-lege tekenreeks wordt gevonden. 2
Coalesce( Blank(), "", Blank(), "", "3", "4" ) Coalesce begint aan het begin van de lijst met argumenten en evalueert elk argument totdat er een niet-lege waarde en een niet-lege tekenreeks wordt gevonden. In dit geval retourneren de eerste vier argumenten allemaal een lege waarde of een lege tekenreeks. De evaluatie wordt dus voortgezet met het vijfde argument. Het vijfde argument is niet-leeg en geen lege tekenreeks, dus de evaluatie stopt hier. De waarde van het vijfde argument wordt geretourneerd en het zesde argument wordt niet geëvalueerd. 3
Coalesce( "" ) Test het eerste argument dat een lege tekenreeks is. Omdat het eerste argument een lege tekenreeks is en er geen argumenten meer zijn, retourneert de functie leeg. leeg

IsBlank

  1. Maak een geheel nieuwe app en voeg een besturingselement voor tekstinvoer toe met de naam FirstName.

  2. Voeg een label toe en stel de eigenschap Text in op deze formule:

    If( IsBlank( FirstName.Text ), "First Name is a required field." )
    

    De eigenschap Text van een besturingselement voor tekstinvoer is standaard ingesteld op 'Text input'. Omdat de eigenschap een waarde bevat, is deze niet leeg en geeft het label geen bericht weer.

  3. Verwijder alle tekens, inclusief eventuele spaties, uit het besturingselement voor tekstinvoer.

    Omdat de eigenschap Text geen tekens meer bevat, is het een lege tekenreeks en is IsBlank( FirstName.Text )true. Het bericht voor het vereiste veld wordt weergegeven.

Zie de functie Validate en werken met gegevensbronnen voor meer informatie over het uitvoeren van validatie met behulp van andere hulpprogramma's.

Andere voorbeelden:

Formule Beschrijving Resultaat
IsBlank( Blank() ) Deze functie test de geretourneerde waarde van de functie Blank en retourneert altijd een lege waarde. true
IsBlank( "" ) Een tekenreeks die geen tekens bevat. true
IsBlank( "Hallo" ) Een tekenreeks die een of meer tekens bevat. false
IsBlank( AnyCollection ) Omdat de verzameling bestaat, is deze niet leeg, zelfs als deze geen records bevat. Gebruik in plaats daarvan IsEmpty om te controleren op een lege verzameling. false
IsBlank( Mid( "Hallo", 17, 2 ) ) Het eerste teken voor Mid ligt voorbij het einde van de tekenreeks. Het resultaat is een lege tekenreeks. true
IsBlank( If( false, false ) ) Een If-functie zonder ElseResult. Omdat de voorwaarde altijd false is, retourneert deze If altijd een lege waarde. true

IsEmpty

  1. Maak een volledig nieuwe app en voeg een besturingselement van het type Button toe.

  2. Stel de eigenschap OnSelect van de knop in op deze formule:

    Collect( IceCream, { Flavor: "Strawberry", Quantity: 300 }, { Flavor: "Chocolate", Quantity: 100 } )

  3. Klik of tik op de knop die u hebt toegevoegd om een voorbeeld te bekijken van uw app en sluit vervolgens het voorbeeld.

    Er wordt een verzameling met de naam IceCream gemaakt die de volgende gegevens bevat:

    Een tabel met smaken Aardbei en Chocolade met hoeveelheid 300 en 100.

    Deze verzameling heeft twee records en is niet leeg. IsEmpty( IceCream ) retourneert false en CountRows( IceCream ) retourneert 2.

  4. Voeg een tweede knop toe en stel de eigenschap OnSelect ervan in op deze formule:

    Clear( IceCream )

  5. Klik of tik op de tweede knop om een voorbeeld te bekijken van uw app en sluit vervolgens het voorbeeld.

    De verzameling is nu leeg:

    Een collectie met Smaak en Hoeveelheid als lege collectie.

    Met de functie Clear worden alle records uit een verzameling verwijderd. Het is nu een lege verzameling. IsEmpty( IceCream ) retourneert true en CountRows( IceCream ) retourneert 0.

U kunt, zoals deze voorbeelden aantonen, IsEmpty ook gebruiken om te testen of een berekende tabel leeg is:

Formule Beschrijving Resultaat
IsEmpty( [ 1, 2, 3 ] ) De tabel met één kolom bevat drie records en is daarom niet leeg. false
IsEmpty( [ ] ) De tabel met één kolom bevat geen records en is leeg. true
IsEmpty( Filter( [ 1, 2, 3 ], Value > 5 ) ) De tabel met één kolom bevat geen waarden die groter zijn dan 5. Het resultaat van het filter bevat geen records en is leeg. true