Over tabellen en records in PowerAppsUnderstand tables and records in PowerApps

U kunt een app maken die toegang heeft tot informatie in Microsoft Excel, SharePoint, SQL Server en enkele andere bronnen die gegevens opslaan in records en tabellen.You can create an app that accesses information in Microsoft Excel, SharePoint, SQL Server, and several other sources that store data in records and tables. Om zo efficiënt mogelijk met dit soort gegevens te werken, moet u de concepten doornemen die ten grondslag liggen aan deze structuren.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • Een record bevat een of meer informatiecategorieën over een persoon, een plaats of een ding.A record contains one or more categories of information about a person, a place, or a thing. Een record kan bijvoorbeeld de naam, het e-mailadres en het telefoonnummer van één klant bevatten.For example, a record might contain the name, the email address, and the phone number of a single customer. Andere hulpprogramma's verwijzen naar een record als een 'rij' of een 'item'.Other tools refer to a record as a "row" or an "item."
  • Een tabel bevat een of meer records met dezelfde informatiecategorieën.A table holds one or more records that contain the same categories of information. Een tabel kan bijvoorbeeld de namen, de e-mailadressen en de telefoonnummers van 50 klanten bevatten.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

In uw app gebruikt u formules om records en tabellen te maken, bij te werken en te bewerken.In your app, you'll use formulas to create, update, and manipulate records and tables. U zult waarschijnlijk gegevens lezen en schrijven naar een externe gegevensbron. Dit is een uitgebreide tabel.You'll probably read and write data to an external data source, which is an extended table. Bovendien maakt u een of meer interne tabellen. Deze worden verzamelingen genoemd.In addition, you might create one or more internal tables, which are called collections.

Net zoals een formule in Excel een of meer celverwijzingen als argumenten heeft, kunt u verschillende formules maken die de naam van een tabel als een argument hebben.You can build a variety of formulas that take the name of a table as an argument, just as a formula in Excel takes one or more cell references as arguments. Sommige formules in PowerApps retourneren een tabel die de andere argumenten die u opgeeft, weerspiegelen.Some formulas in PowerApps return a table that reflects the other arguments that you specify. U maakt bijvoorbeeld een formule:For example, you might create a formula:

  • om een record in een tabel bij te werken door deze tabel op te geven als een van meerdere argumenten voor de functie Patchto update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • om kolommen in een tabel toe te voegen, te verwijderen en de naam te wijzigen door deze tabel op te geven als een argument voor de functie AddColumns, DropColumns of RenameColumns.to add, remove, and rename columns in a table by specifying that table as an argument for the AddColumns, DropColumns, or RenameColumns function. Geen van deze functies wijzigt de oorspronkelijke tabel.None of those functions modifies the original table. In plaats daarvan retourneert de functie een andere tabel op basis van de andere argumenten die u hebt opgegeven.Instead, the function returns another table based on the other arguments that you specify.

Elementen van een tabelElements of a table

RecordsRecords

Elke record bevat ten minste één informatiecategorie voor een persoon, een plaats of een ding.Each record contains at least one category of information for a person, a place, or a thing. In het bovenstaande voorbeeld ziet u een record voor elk product (Chocolade, Brood en Water) en een kolom voor elke informatiecategorie (Prijs, Hoeveelheid in voorraad en Hoeveelheid in bestelling).The example above shows a record for each product (Chocolate, Bread, and Water) and a column for each category of information (Price, Quantity on Hand, and Quantity on Order).

In een formule kunt u naar een record zelf verwijzen, buiten de context van een tabel, met behulp van accolades.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. Deze record {Naam: "Aardbeien", Prijs: 7,99} is bijvoorbeeld niet gekoppeld aan een tabel.For example, this record { Name: "Strawberries", Price: 7.99 } isn't associated with a table.

VeldenFields

Een veld is een individueel gedeelte met informatie in een record.A field is an individual piece of information in a record. U kunt een dergelijk veld visualiseren als een waarde in een kolom voor een bepaalde record.You can visualize this sort of field as a value in a column for a particular record.

Net als met een besturingselement verwijst u naar een veld van een record met behulp van de .Just as with a control, you refer to a field of a record by using the . operator op de record.operator on the record. First(Products).Name retourneert bijvoorbeeld het veld Naam voor de eerste record in de tabel Producten.For example, First(Products).Name returns the Name field for the first record in the Products table.

Een veld kan een andere record of tabel bevatten, zoals het voorbeeld voor de functie GroupBy weergeeft.A field can contain another record or table, as the example for the GroupBy function shows. U kunt zoveel niveaus van records en tabellen nesten als u wilt.You can nest as many levels of records and tables as you want.

KolommenColumns

Een kolom verwijst naar hetzelfde veld voor een of meer records in een tabel.A column refers to the same field for one or more records in a table. In het bovenstaande voorbeeld heeft elk product een prijsveld en die prijs bevindt zich in dezelfde kolom voor alle producten.In the above example, each product has a price field, and that price is in the same column for all products. De bovenstaande tabel heeft vier kolommen. Deze zijn bovenaan horizontaal weergegeven:The above table has four columns, shown horizontally across the top:

  • NaamName
  • PrijsPrice
  • Hoeveelheid in voorraadQuantity on Hand
  • Hoeveelheid in bestellingQuantity on Order

De naam van de kolom geeft de velden in die kolom weer.The column's name reflects the fields in that column.

Alle waarden in een kolom zijn van hetzelfde gegevenstype.All values within a column are of the same data type. In het bovenstaande voorbeeld bevat de kolom 'Hoeveelheid in voorraad' altijd een getal en kan deze geen tekenreeks, zoals '12 eenheden', bevatten voor één record.In the above example, the "Quantity on Hand" column always contains a number and can't contain a string, such as "12 units," for one record. De waarde van een willekeurig veld kan tevens leeg zijn.The value of any field may also be blank.

In andere hulpprogramma's hebt u kolommen mogelijk 'velden' genoemd.You may have referred to columns as "fields" in other tools.

Notitie

Kolomnamen met spaties in gegevensbronnen van Excel of SharePoint worden in PowerApps vervangen door ‘_x0020_’.For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". 'Kolom twaalf' in SharePoint of Excel wordt bijvoorbeeld weergegeven als 'Kolom_x0020_twaalf' in PowerApps wanneer de naam wordt weergegeven in de gegevensindeling of wordt gebruikt in een formule.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in PowerApps when displayed in the data layout or used in a formula.

TabelTable

Een tabel bestaat uit een of meer records, elk met meerdere velden met consistente namen tussen de records.A table comprises one or more records, each with multiple fields that have consistent names across the records.

Een tabel die in een gegevensbron of een verzameling is opgeslagen, heeft een naam. Deze gebruikt u om naar de tabel te verwijzen en deze door te geven aan functies die tabellen als argumenten hebben.Any table that's stored in a data source or a collection has a name, which you use to refer to the table and pass it to functions that take tables as arguments. Tabellen kunnen ook het resultaat zijn van een functie of een formule.Tables can also be the result of a function or a formula.

U kunt een tabel in een formule uitdrukken met behulp van de functie Table met een set records, die u tussen accolades zet, zoals in het volgende voorbeeld:As in the following example, you can express a table in a formula by using the Table function with a set of records, which you express in curly braces:

Tabel( { Waarde: "Aardbeien"}, { Waarde: "Vanille" } )Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

U kunt ook een tabel met één kolom definiëren met vierkante haken.You can also define a single-column table with square brackets. U kunt het bovenstaande ook als volgt opschrijven:An equivalent way to write the above:

[ "Aardbeien", "Vanille" ][ "Strawberry", "Vanilla" ]

TabelformulesTable formulas

In Excel en PowerApps gebruikt u formules om getallen en tekstreeksen op vergelijkbare wijze te bewerken:In Excel and PowerApps, you use formulas to manipulate numbers and strings of text in similar ways:

  • Typ in Excel een waarde, zoals 42 in cel A1. Typ vervolgens een formule, zoals A1+2 in een andere cel om de waarde 44 weer te geven.In Excel, type a value, such as 42, in cell A1, and then type a formula, such as A1+2, in another cell to show the value of 44.
  • In PowerApps stelt u de eigenschap Default van Slider1 in op 42 en stelt u de eigenschap Text van een label in op Slider1.Value + 2 om de waarde 44 weer te geven.In PowerApps, set the Default property of Slider1 to 42, and set the Text property of a label to Slider1.Value + 2 to show the value of 44.

In beide gevallen wordt de berekende waarde automatisch gewijzigd als u de waarden van de argumenten wijzigt (bijvoorbeeld het getal in cel A1 of de waarde van Slider1).In both cases, the calculated value changes automatically if you change the values of the arguments (for example, the number in cell A1 or the value of Slider1).

Op vergelijkbare wijze kunt u formules gebruiken om gegevens in tabellen en records te openen en te bewerken.Similarly, you can use formulas to access and manipulate data in tables and records. U kunt namen van tabellen gebruiken als argumenten in sommige formules, zoals Min(Catalog, Price) om de laagste waarde in de kolom Prijs van de tabel Catalogus weer te geven.You can use names of tables as arguments in some formulas, such as Min(Catalog, Price) to show the lowest value in the Price column of the Catalog table. Andere formules bieden hele tabellen als retourwaarden, zoals RenameColumns(Catalogus, "Prijs", "Kosten"), die alle records uit de tabel Catalogus retourneert, maar de naam van de kolom Prijs in Kosten wijzigt.Other formulas provide whole tables as return values, such as RenameColumns(Catalog, "Price", "Cost"), which returns all the records from the Catalog table but changes the name of the Price column to Cost.

Net zoals met getallen worden formules die betrekking hebben op tabellen en records automatisch opnieuw berekend als de onderliggende tabel of record wordt gewijzigd.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Als de kosten van een product in de tabel Catalogus onder het vorige minimum worden verlaagd, wordt de geretourneerde waarde van de formule Min automatisch gewijzigd, zodat deze hiermee overeenkomt.If the cost of a product in the Catalog table is lowered below the previous minimum, the return value of the Min formula will automatically change to match it.

Hieronder volgen een aantal eenvoudige voorbeelden.Let's walk through some simple examples.

  1. Voeg een besturingselement Tekstgalerie toe en stel de eigenschap Items in op de naam van een tabel.Add a Text gallery control, and set its Items property to the name of a table.

    Standaard toont de galerie tekst van een tijdelijke aanduiding uit een tabel met de naam TextualGallerySample.By default, the gallery shows placeholder text from a table named TextualGallerySample. De eigenschap Items van de galerie wordt automatisch ingesteld op die tabel.The Items property of the gallery is automatically set to that table.

    Notitie

    Sommige besturingselementen zijn anders gerangschikt en vergroot voor illustratiedoeleinden.Some controls have been rearranged and enlarged for illustration purposes.

  2. In plaats van de eigenschap Items in te stellen op de naam van een tabel, stelt u deze in op een formule met de naam van de tabel als een argument, zoals in het volgende voorbeeld:Instead of setting the Items property to the name of a table, set it to a formula that includes the name of the table as an argument, as in this example:
    Sort(TextualGallerySample, Heading, Descending)Sort(TextualGallerySample, Heading, Descending)

    Deze formule omvat de functie Sort, waarbij de naam van een tabel als het eerste argument en de naam van een kolom in die tabel als tweede argument worden genomen.This formula incorporates the Sort function, which takes the name of a table as its first argument and the name of a column in that table as its second argument. De functie ondersteunt ook een optioneel derde argument waarin wordt bepaald dat u de gegevens in aflopende volgorde wilt sorteren.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Stel de eigenschap Items in op een formule die de formule van de vorige stap als een argument neemt en een tabel retourneert, zoals in het volgende voorbeeld:Set the Items property to a formula that takes the formula from the previous step as an argument and returns a table, as in this example:
    FirstN(Sort(TextualGallerySample, Heading, Descending), 2)FirstN(Sort(TextualGallerySample, Heading, Descending), 2)

    In deze formule gebruikt u de functie FirstN om een bepaald aantal records in een tabel weer te geven.In this formula, you use the FirstN function to show a particular number of records in a table. U gebruikt de functie Sort als het eerste argument voor FirstN en een getal (in dit geval 2) als het tweede argument, dat aangeeft hoeveel records er worden weergegeven.You use the Sort function as the first argument to FirstN and a number (in this case, 2) as the second argument, which specifies how many records to show.

    De gehele formule retourneert een tabel met de eerste twee records van de tabel TextualGallerySample gesorteerd op de kolom Kop in aflopende volgorde.The entire formula returns a table that contains the first two records of the TextualGallerySample table, sorted by the Heading column in descending order.

Tabelfuncties en besturingselementeigenschappenTable functions and control properties

Veel functies in PowerApps nemen de naam van een tabel als een argument, maken een tweede tabel met dezelfde gegevens, bewerken de nieuwe tabel op basis van de andere argumenten en retourneren vervolgens het resultaat.Many functions in PowerApps take the name of a table as an argument, create a second table that contains the same data, manipulate the new table based the other arguments, and then return the result. Deze functies wijzigen de oorspronkelijke tabel niet, zelfs als deze een gegevensbron is.These functions don't modify the original table, even if it's a data source.

U kunt een functie uitvoeren op een tabel die uit meerdere kolommen bestaat, zelfs als de functie één kolom als argument vereist.You can run a function on a table that contains multiple columns, even if the function requires a single column as an argument. Als u één kolom uit een tabel met meerdere kolommen wilt halen, gebruikt u de functie ShowColumns als een argument voor de functie die u wilt gebruiken, zoals in het volgende voorbeeld:To extract a single column from a multi-column table, use the ShowColumns function as an argument for the function that you want to use, as in this example:
Kleine letters( ShowColumns( Producten, "Naam" ) )Lower( ShowColumns( Products, "Name" ) )

Deze formule maakt een tabel met één kolom die alle gegevens van de kolom Naam van de tabel Producten bevat, maar converteert hoofdletters in kleine letters.This formula creates a single-column table that contains all the data from the Name column of the Products table but converts any uppercase letters to lowercase letters. Als u een tabel als argument voor de functie AddColumns, RenameColumns of DropColumns opgeeft, kunt u de tabel een geheel nieuwe vorm geven.If you specify a table as an argument for the AddColumns, RenameColumns, or DropColumns function, you can completely reshape that table however you want.

Als u een gegevensbron als argument voor een van deze functies opgeeft, worden de records van die gegevensbron gewijzigd en wordt doorgaans de nieuwe waarde van de gegevensbron als een tabel geretourneerd.If you specify a data source as an argument for one of these functions, it will modify the records of that data source and, in general, return the data source's new value as a table.

De volgende besturingselementen hebben eigenschappen die tabellen zijn:The following controls have properties that are tables:

  • Items: is van toepassing op galerieën en keuzelijsten.Items - Applies to galleries and list boxes. Tabel om in de galerie weer te geven.Table to display in the gallery.
  • SelectedItems: is van toepassing op keuzelijsten.SelectedItems - Applies to list boxes. Tabel van de items die de gebruiker heeft geselecteerd.Table of items that the user has selected.

RecordformulesRecord formulas

U kunt ook een formule maken die gegevens voor een afzonderlijke record berekent, een afzonderlijke record als een argument neemt en een afzonderlijke record als een retourwaarde geeft.You can also build a formula that calculates data for an individual record, takes an individual record as an argument, and provides an individual record as a return value. We gaan terug naar het bovenstaande galerievoorbeeld. We gebruiken de eigenschap Gallery1.Selected om informatie weer te geven van de record die de gebruiker in die galerie selecteert.Returning to our gallery example above, let's use the Gallery1.Selected property to display information from whatever record the user selects in that gallery.

  1. Voeg een knop toe en stel de eigenschap BijSelecteren ervan in op deze formule:Add a button, and set its OnSelect property to this formula:
    Verzamelen( SelectedRecord, Gallery1.Selected)Collect( SelectedRecord, Gallery1.Selected )

  2. Als de knop niet is geselecteerd, klikt u hierop om deze te selecteren. Klik hier opnieuw op om de formule uit te voeren.If the button isn't selected, click it to select it, and then click it again to run the formula.

  3. Selecteer Verzamelingen in het menu Bestand.In the File menu, select Collections.

Deze formule retourneert een record met de gegevens van de record die momenteel in de galerie is geselecteerd en ook elk besturingselement in die galerie.This formula returns a record that includes not only the data from the record that's currently selected in the gallery but also each control in that gallery. De record bevat bijvoorbeeld zowel een kolom Body, die overeenkomt met de kolom Body in de oorspronkelijke tabel als een kolom Body1, die het label aanduidt waarin de gegevens van die kolom worden weergegeven.For example, the record contains both a Body column, which matches the Body column in the original table, and a Body1 column, which represents the label that shows the data from that column. Selecteer het tabelpictogram in de kolom Body1 om die gegevens te bekijken.Select the table icon in the Body1 column to drill into that data.

Nu u de geselecteerde record hebt, kunt u hieruit afzonderlijke velden halen met de .Now that you have the selected record, you can extract individual fields from it with the . .operator.

  1. Druk op Esc om terug te keren naar de standaardwerkruimte en voeg vervolgens een label toe onder de galerie.Press Esc to return to the default workspace, and then add a label below the gallery.

  2. Stel de eigenschap Text van het label in op deze formule:Set the Text property of the label to this formula:
    Gallery.Selected.HeadingGallery.Selected.Heading

U hebt de eigenschap Selected genomen, die een record is, en de eigenschap Heading uitgepakt.You've taken the Selected property, which is a record, and extracted the Heading property from it.

U kunt ook een record gebruiken als een container voor algemeen gebruik voor verwante naamwaarden.You can also use a record as a general-purpose container for related named values.

  • Als u een formule maakt rond de functies UpdateContext en Navigate, moet u een record gebruiken om de contextvariabelen te verzamelen die u wilt bijwerken.If you build a formula around the UpdateContext and Navigate functions, use a record to gather the context variables that you want to update.
  • Gebruik de eigenschap Updates op een besturingselement Bewerkingsformulier om de wijzigingen te verzamelen die door de gebruiker op een formulier zijn aangebracht.Use the Updates property on an Edit form control to gather the changes that have been made by the user in a form.
  • Gebruik de functie Patch om een gegevensbron bij te werken, maar ook om records samen te voegen.Use the Patch function to update a data source but also to merge records.

In dergelijke gevallen is de record nooit een deel van een tabel geweest.In these cases, the record was never a part of a table.

Recordfuncties en besturingselementeigenschappenRecord functions and control properties

Functies die records retourneren:Functions that return records:

  • FirstN, LastN: retourneert de eerste of de laatste record of records van de tabel.FirstN, LastN - Returns the first or last record or records of the table.
  • Opzoeken: retourneert de eerste record van een tabel die overeenkomt met een of meer criteria.Lookup - Returns the first record from a table that matches one or more criteria.
  • Patch: werkt een gegevensbron bij of voegt records samen.Patch - Updates a data source or merges records.
  • Standaarden: retourneert de standaardwaarden voor een gegevensbron.Defaults - Returns the default values for a data source.

Eigenschappen die records retourneren:Properties that return records:

  • Geselecteerd: is van toepassing op galerieën en keuzelijsten.Selected - Applies to galleries and list boxes. Retourneert de huidige geselecteerde record.Returns the currently selected record.
  • Updates: is van toepassing op galerieën.Updates - Applies to galleries. Verzamelt alle wijzigingen die een gebruiker op een formulier voor gegevensinvoer maakt.Pulls together all the changes that a user makes in a data-entry form.
  • Update: is van toepassing op besturingselementen voor de invoer, zoals besturingselementen voor tekstinvoer en schuifregelaars.Update - Applies to input controls such as text-input controls and sliders. Hiermee worden afzonderlijke eigenschappen ingesteld voor de galerie om te verzamelen.Sets up individual properties for the gallery to pull together.

RecordbereikRecord scope

Sommige functies worden uitgevoerd door een formule te evalueren voor alle records van een tabel afzonderlijk.Some functions operate by evaluating a formula across all the records of a table individually. Het resultaat van de formule wordt op verschillende manieren gebruikt:The formula's result is used in various ways:

  • Filter, Opzoeken: formule bepaalt of de record moet worden opgenomen in de uitvoer.Filter, Lookup - Formula determines if the record should be included in the output.
  • Sorteren: formule geeft de waarde waarop de records moeten worden gesorteerd.Sort - Formula provides the value to sort the records on.
  • Samenvoegen: formule bepaalt de tekenreeksen die moeten worden samengevoegd.Concat - Formula determines the strings to concatenate together.
  • ForAll: formule kan elke waarde retourneren, mogelijk met een neveneffect.ForAll - Formula can return any value, potentially with a side effect.
  • Afzonderlijk: formule retourneert een waarde die wordt gebruikt om dubbele records te identificeren.Distinct - Formula returns a value, used to identify duplicate records.
  • AddColumns: formule geeft de waarde van het toegevoegde veld.AddColumns - Formula provides the value of the added field.
  • Gemiddelde, Max, Min, Som, StdevP, VarP: formule geeft de waarde om samen te voegen.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.

In deze formules kunt u verwijzen naar de velden van de record die wordt verwerkt.Inside these formulas, you can reference the fields of the record being processed. Elk van deze functies maakt een 'recordbereik' waarin de formule wordt geëvalueerd, waarbij de velden van de record beschikbaar zijn als id's op het hoogste niveau.Each of these functions creates a "record scope" in which the formula is evaluated, where the fields of the record are available as top-level identifiers. U kunt in de hele app ook naar eigenschappen van besturingselementen en andere waarden verwijzen.You can also reference control properties and other values from throughout your app.

Neem bijvoorbeeld een tabel met Producten:For example, take a table of Products:

Als u wilt bepalen of er meer naar een van deze producten is gevraagd dan er beschikbaar is:To determine if any of any of these products had more requested than is available:

Filter( Producten, 'Gevraagde hoeveelheid' > 'Beschikbare hoeveelheid' )Filter( Products, 'Quantity Requested' > 'Quantity Available' )

Het eerste argument om te Filteren is de tabel met records waarop de bewerking wordt toegepast en het tweede argument is een formule.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Filter maakt een recordbereik voor het evalueren van deze formule waarin de velden van elke record beschikbaar zijn. Dat zijn in dit geval Product, Gevraagde hoeveelheid en Beschikbare hoeveelheid.Filter creates a record scope for evaluating this formula in which the fields of each record are available, in this case Product, Quantity Requested, and Quantity Available. Het resultaat van de vergelijking bepaalt of elke record moet worden opgenomen in het resultaat van de functie:The result of the comparison determines if each record should be included in the result of the function:

Met betrekking tot dit voorbeeld kunnen we berekenen hoeveel we van elk product moeten bestellen:Adding to this example, we can calculate how much of each product to order:

AddColumns( Filter( Producten, 'Gevraagde hoeveelheid' > 'Beschikbare hoeveelheid' ), "Te bestellen hoeveelheid", 'Gevraagde hoeveelheid' - 'Beschikbare hoeveelheid' )AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' )

Hier voegen we een berekende kolom toe aan het resultaat.Here we are adding a calculated column to the result. AddColumns heeft zijn eigen recordbereik dat wordt gebruikt om het verschil te berekenen tussen wat er is gevraagd en wat er beschikbaar is.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

Ten slotte kunnen we de resultaattabel beperken tot alleen de gewenste kolommen:Finally, we can reduce the result table to just the columns that we desire:

ShowColumns( AddColumns( Filter( Producten, 'Gevraagde hoeveelheid' > 'Beschikbare hoeveelheid' ), "Te bestellen hoeveelheid", 'Gevraagde hoeveelheid' - 'Beschikbare hoeveelheid' ), "Product", "Te bestellen hoeveelheid" )ShowColumns( AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' ), "Product", "Quantity To Order" )

Houd er rekening mee dat we in het bovenstaande voorbeeld op sommige plekken dubbele aanhalingstekens (") hebben gebruikt en op andere plekken enkele aanhalingstekens (').Note that in the above, we used double quotes (") in some places and single quotes (') in other places. Enkele aanhalingstekens zijn vereist wanneer u verwijst naar de waarde van een object, zoals een veld of tabel, waarin de naam van het object een spatie bevat.Single quotes are required when referencing the value of an object, such as a field or table, in which the name of the object contains a space. Dubbele aanhalingstekens worden gebruikt wanneer er niet naar de waarde van een object wordt verwezen, maar wanneer erover wordt gepraat, met name in situaties waarin het object nog niet bestaat, zoals het geval is met AddColumns.Double quotes are used when we are not referencing the value of an object but instead talking about it, especially in situations in which the object does not yet exist, as in the case of AddColumns.

OndubbelzinnigheidDisambiguation

Veldnamen waarbij het recordbereik is toegevoegd, overschrijven dezelfde namen elders in de app.Field names added with the record scope override the same names from elsewhere in the app. Als dit gebeurt, kunt u nog steeds toegang krijgen tot waarden buiten het recordbereik met de operator voor ondubbelzinnigheid @:When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • Als u toegang wilt krijgen tot waarden van geneste recordbereiken, gebruikt u de operator @ met de naam van de tabel die wordt bewerkt met behulp van het patroon Tabel[@Veldnaam*].To access values from nested record scopes, use the @ operator with the name of the table being operated upon using the pattern Table[@FieldName].
  • Als u toegang wilt krijgen tot globale waarden, zoals gegevensbronnen, verzamelingen en contextvariabelen, gebruikt u het patroon [@Objectnaam] (zonder een tabelaanduiding).To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

Als de tabel die wordt bewerkt een expressie is, zoals een Filter( tabel, ... ), kan de operator voor ondubbelzinnigheid niet worden gebruikt.If the table being operated upon is an expression, such as Filter( table, ... ), then the disambiguation operator cannot be used. Alleen het binnenste recordbereik kan velden openen vanuit deze tabelexpressie door de operator voor ondubbelzinnigheid niet te gebruiken.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

Stelt u zich bijvoorbeeld een verzameling X voor:For example, imagine having a collection X:

U kunt deze verzameling maken met ClearCollect( X, [1, 2] ).You can create this collection with ClearCollect( X, [1, 2] ).

En een andere verzameling Y:And another collection Y:

U kunt deze verzameling maken met ClearCollect( Y, ["A", "B"] ).You can create this collection with ClearCollect( Y, ["A", "B"] ).

Definieer daarnaast een contextvariabele met de naam Waarde met deze formule: UpdateContext( {Waarde: "!"} )In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

Laten we alles combineren.Let's put it all together. In deze context produceert de volgende formule:In this context, the following formula:

  • Groep opheffen( ForAll( X, ForAll( Y, Y[@Value] & Tekst( X[@Value] ) & [@Value] ) ), "Waarde" )Ungroup( ForAll( X, ForAll( Y, Y[@Value] & Text( X[@Value] ) & [@Value] ) ), "Value" )

de volgende tabel:produces this table:

Wat is hier aan de hand?What is going on here? De buitenste functie ForAll definieert een recordbereik voor X, waardoor er toegang tot het veld Waarde van elke record mogelijk is, terwijl deze wordt verwerkt.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. Met behulp van het woord Waarde of met X[@Value] kan deze worden geopend.It can be accessed by simply using the word Value or by using X[@Value].

De binnenste functie ForAll definieert een ander recordbereik voor Y. Deze tabel heeft ook een veld Waarde gedefinieerd, dus als u Waarde hier gebruikt, verwijst deze naar het veld in de record van Y en niet meer naar dat van X. Als u toegang tot het veld Waarde van X wilt krijgen, moet u de langere versie met de operator voor ondubbelzinnigheid gebruiken.The innermost ForAll function defines another record scope for Y. Since this table also has a Value field defined, using Value here refers to the field in Y's record and no longer the one from X. Here, to access X's Value field, we must use the longer version with the disambiguation operator.

Aangezien Y het binnenste recordbereik is, vereist toegang tot de velden van deze tabel geen ondubbelzinnigheid, zodat we de volgende formule met hetzelfde resultaat kunnen gebruiken:Since Y is the innermost record scope, accessing fields of this table do not require disambiguation, allowing us to use this formula with the same result:

  • Groep opheffen( ForAll( X, ForAll( Y, Waarde & Tekst( X[@Value] ) & [@Value] ) ), "Waarde" )Ungroup( ForAll( X, ForAll( Y, Value & Text( X[@Value] ) & [@Value] ) ), "Value" )

Alle recordbereiken ForAll overschrijven het globale bereik.All the ForAll record scopes override the global scope. De contextvariabele Waarde die we hebben gedefinieerd, is niet beschikbaar op naam zonder de operator voor ondubbelzinnigheid.The Value context variable we defined is not available by name without the disambiguation operator. Als u toegang tot deze waarde wilt krijgen, moet u [@Value] gebruiken.To access this value we must use [@Value].

Groep opheffen effent het resultaat, omdat geneste functies ForAll resulteren in een geneste resultaattabel.Ungroup flattens the result, since nested ForAll functions will result in a nested result table.

InlinesyntaxisInline syntax

RecordsRecords

U drukt records uit met behulp van accolades die veldwaarden met een naam bevatten.You express records by using curly braces that contain named field values. U kunt bijvoorbeeld de eerste record in de tabel aan het begin van dit onderwerp uitdrukken met de volgende formule:For example, you can express the first record in the table at the start of this topic by using this formula:

{ Naam: "Chocolade", Prijs: 3,95, 'Hoeveelheid in voorraad': 12, 'Hoeveelheid in bestelling': 10 }{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

U kunt ook formules in andere formules insluiten, zoals het onderstaande voorbeeld weergeeft:You can also embed formulas within other formulas, as this example shows:

{ Naam: First(Products).Name, Prijs: First(Products).Price * 1,095 }{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

U kunt records nesten door accolades te nesten, zoals het volgende voorbeeld weergeeft:You can nest records by nesting curly braces, as this example shows:

{ 'Hoeveelheid': { 'In voorraad': ThisItem.QuantOnHand, 'InBestelling': ThisItem.QuantOnOrder } }{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }

Sluit elke kolomnaam die een speciaal teken bevat, zoals een spatie of een dubbele punt, in met enkele aanhalingstekens.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. Als u een enkel aanhalingsteken in een kolomnaam wilt gebruiken, moet u deze verdubbelen.To use a single quote within a column name, double it.

Houd er rekening mee dat de waarde in de kolom Prijs geen valutasymbool bevat, zoals een dollarteken.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. Die opmaak wordt toegepast wanneer de waarde wordt weergegeven.That formatting will be applied when the value is displayed.

TabellenTables

U kunt een tabel maken met de functie Table en een set records.You can create a table by using the Table function and a set of records. U kunt de tabel aan het begin van dit onderwerp uitdrukken met de volgende formule:You can express the table at the start of this topic by using this formula:

Tabel( { Naam: "Chocolade", Prijs: 3,95, 'Hoeveelheid in voorraad': 12, 'Hoeveelheid in bestelling': 10 },
            { Naam: "Brood", Prijs: 4,95, 'Hoeveelheid in voorraad': 34, 'Hoeveelheid in bestelling': 0 },
            { Naam: "Water", Prijs: 4,95, 'Hoeveelheid in voorraad': 10, 'Hoeveelheid in bestelling': 0 } )
Table( { Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
            { Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
            { Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 } )

U kunt ook tabellen nesten:You can also nest tables:

Tabel( { Naam: "Chocolade",
            'Hoeveelheid geschiedenis': Tabel( { Kwartaal: "Q1", In voorraad: 10, InBestelling: 10 },
                        { Kwartaal: "Q2", In voorraad: 18, InBestelling: 0 } ) } )
Table( { Name: "Chocolate",
            'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
                        { Quarter: "Q2", OnHand: 18, OnOrder: 0 } ) } )

WaardetabellenValue tables

U kunt tabellen met één kolom maken door waarden op te geven tussen vierkante haken.You can create single-column tables by specifying values in square brackets. De resulterende tabel heeft één kolom met de naam Waarde.The resulting table has a single column, named Value.

Bijvoorbeeld, [ 1, 2, 3, 4 ] is gelijk aan Tabel( { Waarde: 1 }, { Waarde: 2 }, { Waarde: 3 }, { Waarde: 4 } ) en retourneert de volgende tabel:For example, [ 1, 2, 3, 4 ] is equivalent to Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) and returns this table: