Förstå tabeller och poster för appar för arbetsytor i PowerAppsUnderstand canvas-app tables and records in PowerApps

I PowerApps kan du skapa en app för arbetsytor med åtkomst till information i Microsoft Excel, SharePoint, SQL Server och flera andra källor som lagrar data i poster och tabeller.In PowerApps, you can create a canvas app that accesses information in Microsoft Excel, SharePoint, SQL Server, and several other sources that store data in records and tables. Om du vill arbeta så effektivt som möjligt med den här typen av data, så är det viktigt att du studerar de begrepp som ligger bakom dessa strukturer.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • En post innehåller en eller flera typer av information om en person, en plats eller en sak.A record contains one or more categories of information about a person, a place, or a thing. En post kan t.ex. innehålla en kunds namn, e-postadress och telefonnummer.For example, a record might contain the name, the email address, and the phone number of a single customer. Andra verktyg kan referera till en post som en "rad" eller ett "objekt".Other tools refer to a record as a "row" or an "item."
  • En tabell innehåller en eller flera poster som innehåller samma informationskategorier.A table holds one or more records that contain the same categories of information. En tabell kan t.ex. innehålla namn, e-postadress och telefonnummer för 50 kunder.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

I din app använder du formler för att skapa, uppdatera och ändra poster och tabeller.In your app, you'll use formulas to create, update, and manipulate records and tables. Du kommer förmodligen att läsa och skriva data till en extern datakälla, i form av en utökad tabell.You'll probably read and write data to an external data source, which is an extended table. Dessutom kan du skapa en eller flera interna tabeller, vilka kallas samlingar.In addition, you might create one or more internal tables, which are called collections.

Du kan skapa flera olika formler som använder ett tabellnamn som argument, precis som en formel i Excel kan använda en eller flera cellreferenser som argument.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. Vissa formler i PowerApps returnerar en tabell som visar de övriga argument som du anger.Some formulas in PowerApps return a table that reflects the other arguments that you specify. Du kan t.ex. skapa en formel:For example, you might create a formula:

  • för att uppdatera en post i en tabell genom att ange tabellen som en av flera argument för funktionen Patchto update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • för att lägga till, ta bort och byta namn på kolumner i en tabell genom att ange den tabellen som argument för funktionen AddColumns , DropColumns eller RenameColumns .to add, remove, and rename columns in a table by specifying that table as an argument for the AddColumns, DropColumns, or RenameColumns function. Ingen av dessa funktioner påverkar den ursprungliga tabellen.None of those functions modifies the original table. I stället returnerar funktionen en annan tabell utifrån de argument som du anger.Instead, the function returns another table based on the other arguments that you specify.

TabellelementElements of a table

PosterRecords

Varje post innehåller minst en informationskategori för en person, plats eller sak.Each record contains at least one category of information for a person, a place, or a thing. I exemplet ovan visas en post för varje produkt (Chocolate, Bread, och Water) och en kolumn för varje informationskategori (Price, Quantity on Hand och Quantity on Order).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).

I en formel kan du referera till en post i sig, utanför tabellens kontext, genom att använda klammerparenteser.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. Posten till exempel {Name: "Jordgubbar"; pris: 7;99} är inte kopplad till en tabell.For example, this record { Name: "Strawberries"; Price: 7,99 } isn't associated with a table. Observera att fältnamn som namn och pris i det här exemplet är inte angivna inom dubbla citattecken.Note that field names, such as Name and Price in that example, aren't enclosed in double quotation marks.

FältFields

Ett fält är en självständig informationsdel del i en post.A field is an individual piece of information in a record. Du kan visualisera den här typen av fält som ett värde i en viss posts kolumn.You can visualize this sort of field as a value in a column for a particular record.

Precis som när det gäller kontroller måste du referera till en posts fält med hjälp av .Just as with a control, you refer to a field of a record by using the . operator i posten.operator on the record. Exempel: First(Products).Name returnerar fältet Name för den första posten i tabellen Products.For example, First(Products).Name returns the Name field for the first record in the Products table.

Ett fält kan innehålla en annan post eller tabell, så som visas i exemplet med funktionen GroupBy .A field can contain another record or table, as the example for the GroupBy function shows. Du kan kapsla så många post- och tabellnivåer du vill.You can nest as many levels of records and tables as you want.

KolumnerColumns

En kolumn refererar till samma fält för en eller flera poster i en tabell.A column refers to the same field for one or more records in a table. I exemplet ovan har varje produkt ett fält för pris, och det priset finns i samma kolumn för alla produkter.In the above example, each product has a price field, and that price is in the same column for all products. Tabellen ovan innehåller fyra kolumner, som visas vågrätt högst upp:The above table has four columns, shown horizontally across the top:

  • NameName
  • PricePrice
  • Quantity on HandQuantity on Hand
  • Quantity on OrderQuantity on Order

Kolumnens namn indikerar innehållet i kolumnens fält.The column's name reflects the fields in that column.

Alla värden i en kolumn har samma datatyp.All values within a column are of the same data type. I exemplet ovan innehåller kolumnen Quantity on Hand alltid ett tal, och ingen av dess poster kan innehålla någon sträng, som t.ex. "12 units".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. Värdet i ett fält kan även vara tomt.The value of any field may also be blank.

Du är kanske van från andra verktyg av att kalla kolumner för fält.You may have referred to columns as "fields" in other tools.

Anteckning

För SharePoint- och Excel-datakällor som innehåller kolumnnamn med blanksteg ersätter PowerApps blankstegen med ”_x0020_” .For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". Till exempel visas "Kolumnens namn" i SharePoint eller Excel som "Kolumnens_x0020_namn" i PowerApps när det visas i datalayouten eller används i en formel.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.

TabellTable

En tabell består av en eller flera poster, som var och en innehåller flera fält som har enhetliga namn för alla poster.A table comprises one or more records, each with multiple fields that have consistent names across the records.

En tabell som lagras i en datakälla eller en samling har ett namn som du använder när du refererar till tabellen och vidarebefordrar detta till funktioner som använder tabeller som argument.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. Tabeller kan också vara resultatet av en funktion eller en formel.Tables can also be the result of a function or a formula.

Som du ser av följande exempel kan du uttrycka en tabell i en formel genom att använda tabellfunktionen med en uppsättning poster som du anger mellan klammerparenteser: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:

Table( { Value: "Strawberry" }; { Value: "Vanilla" } )

Du kan även definiera en enkolumnstabell med hakparenteser.You can also define a single-column table with square brackets. Ett annat sätt att skriva detta på är:An equivalent way to write the above:

[ "Strawberry"; "Vanilla" ]

TabellformlerTable formulas

I Excel och PowerApps använder kan du använda formler för att ändra tal och textsträngar på liknande sätt:In Excel and PowerApps, you use formulas to manipulate numbers and strings of text in similar ways:

  • Skriv ett värde i Excel, t.ex. 42, i cell A1, och skriv sedan en formel som A1 + 2 i en annan cell, så att värdet 44 visas.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.
  • Ställ in egenskapen Default för Slider142 i PowerApps, och ställ in egenskapen Text för en etikett till Slider1.Value + 2, så visas värdet 44.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.

I båda fallen ändras det beräknade värdet automatiskt om du ändrar argumentens värden (t.ex. talet i cell A1 eller värdet för 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).

På samma sätt kan du använda formler för att få åtkomst till och hantera data i tabeller och poster.Similarly, you can use formulas to access and manipulate data in tables and records. Du kan använda namn på tabeller som argument i vissa formler, t.ex. Min(Catalog; Price) om du vill visa det lägsta värdet i kolumnen Price i tabellen Catalog.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. Andra formler tillhandahåller hela tabeller som returvärden, t.ex. RenameColumns(Catalog; "Price"; "Cost") , som returnerar alla poster från tabellen Catalog, men som ändrar namnet på kolumnen Price till Cost.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.

Precis som när det gäller tal så räknas formler som inbegriper tabeller automatiskt om när den underliggande tabellen eller de underliggande posterna ändras.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Om kostnaden för en produkt i tabellen Catalog sjunker under tidigare minimivärde, så ändras returvärdet för formeln Min automatiskt så att det matchar kostnaden.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.

Låt oss se på några enkla exempel.Let's walk through some simple examples.

  1. Skapa en tom app för en telefon och lägg till en lodrätt Gallery -kontroll som innehåller andra kontroller.Create a blank app for a phone, and add a vertical Gallery control that contains other controls.

    Som standard visar skärmen platshållartext från en tabell som heter CustomGallerySample.By default, the screen shows placeholder text from a table named CustomGallerySample. Egenskapen Items för skärmens Gallery -kontroll ställs automatiskt in på den tabellen.The Items property of the screen's Gallery control is automatically set to that table.

    Anteckning

    Vissa kontroller har ordnats om och förstorats för tydlighetens skull.Some controls have been rearranged and enlarged for illustration purposes.

  2. I stället för att ställa in egenskapen Items till namnet på en tabell, så kan du ställa in den på en formel som inkluderar tabellens namn som ett argument, så som i följande exempel: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(CustomGallerySample; SampleHeading; Descending)

    Den här formeln innehåller funktionen Sort , vilken har namnet på en tabell som sitt första argument och namnet på en kolumn i den tabellen som sitt andra argument.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. Funktionen stöder även ett valfritt tredje argument som anger att du vill sortera data i fallande ordning.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Ställ in egenskapen Items så att den använder formeln från föregående steg som argument och returnerar en tabell, så som i följande exempel: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(CustomGallerySample; SampleHeading; Descending); 2)

    I den här formeln använder du funktionen FirstN för att visa ett visst antal poster i en tabell.In this formula, you use the FirstN function to show a particular number of records in a table. Du använder funktionen Sort som det första argumentet för FirstN och ett tal (i det här fallet 2) som det andra argumentet, vilket anger hur många poster som ska visas.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.

    Hela formeln returnerar en tabell som innehåller de två första posterna för tabellen CustomGallerySample, sorterad efter kolumnen SampleHeading i fallande ordning.The entire formula returns a table that contains the first two records of the CustomGallerySample table, sorted by the SampleHeading column in descending order.

Tabellfunktioner och kontrollegenskaperTable functions and control properties

Överväg den nedre funktionen.Consider the Lower function. Om variabeln Välkommen innehåller text strängen "Hello, World" , returnerar formeln lägre (Välkommen) "Hello, World" .If the variable welcome contains the text string "Hello, World", the formula Lower( welcome ) returns "hello, world". Den här funktionen kan inte på något sätt ändra värdet i variabeln.This function doesn't, in any way, change the value in that variable. Lägre är en ren funktion eftersom den endast bearbetar indata och genererar utdata.Lower is a pure function in that it only processes input and produces output. Det är allt. den har inga sido effekter.That's all; it has no side effects. Alla funktioner i Excel och de flesta funktioner i PowerApps är rena funktioner som gör att arbets boken eller appen kan beräknas om automatiskt.All functions in Excel and most functions in PowerApps are pure functions, which allow the workbook or the app to be recalculated automatically.

PowerApps erbjuder en uppsättning funktioner som körs på tabeller på samma sätt.PowerApps offers a set of functions that operate on tables in the same manner. Dessa funktioner tar tabeller som indata och filtrerar, sorterar, transformerar, minskar och sammanfattar hela data tabeller.These functions take tables as input and filter, sort, transform, reduce, and summarize entire tables of data. I själva verket kan lägre och många andra funktioner som vanligt vis tar ett enda värde också ta en tabell med en kolumn som inmatad.In fact, Lower and many other functions that typically take a single value can also take a single-column table as input.

  • Sort , Filter - Sorterar och filtrerar poster.Sort, Filter - Sorts and filters records.
  • FirstN , LastN – Returnerar de första N eller sista N posterna i tabellen.FirstN, LastN - Returns the first N or last N records of the table.
  • Abs , Sqrt , Round , RoundUp , RoundDown - Aritmetiska åtgärder på varje post i en enkolumnstabell som resulterar i en enkolumnstabell med resultat.Abs, Sqrt, Round, RoundUp, RoundDown - Arithmetic operations on each record of a single-column table, resulting in a single-column table of results.
  • Left , Mid , Right , Replace , Substitute , Trim , Lower , Upper , Proper - Stränghantering för varje post i en enkolumnstabell som resulterar i en enkolumnstabell med strängar.Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - String manipulations on each record of a single-column table, resulting in a single-column table of strings.
  • Len – Returnerar för en kolumn med strängar en enkolumnstabell som innehåller längden för varje sträng.Len - For a column of strings, returns a single-column table that contains the length of each string.
  • Concatenate – Sammanfogar flera kolumner med strängar, vilket resulterar i en enkolumnstabell med strängar.Concatenate - Concatenates multiple columns of strings, resulting in a single-column table of strings.
  • AddColumns , DropColumns , RenameColumns , ShowColumns – Kolumnhantering av tabellen, vilket resulterar i en ny tabell med olika kolumner.AddColumns, DropColumns, RenameColumns, ShowColumns - Column manipulation of the table, resulting in a new table with different columns.
  • Distinct – Tar bort dubblettposter.Distinct - Removes duplicates records.
  • Shuffle – Flyttar runt poster i slumpmässig ordning.Shuffle - Shuffles records into a random order.
  • HashTags - Söker efter hashtaggar i en sträng.HashTags - Searches for hashtags in a string.
  • Errors – Tillhandahåller felinformation när du arbetar med en datakälla.Errors - Provides error information when you work with a data source.

Många av dessa funktioner tar en tabell med en kolumn som indatatyp.Many of these functions take a single-column table as their input. Om en hel tabell bara har en kolumn kan du ange den efter namn.If an entire table has only one column, you can specify it by name. Om en tabell har flera kolumner kan du ange en av dessa kolumner med syntaxen Table. Column .If a table has multiple columns, you can specify one of those columns by using Table.Column syntax. Till exempel returnerar Products.name tabellen med en kolumn med endast namn värden från tabellen produkter .For example, Products.Name returns the single-column table of only Name values from the Products table.

Du kan helt ändra form på en tabell som du vill ha genom att använda funktionen AddColumns , RenameColumns , ShowColumns eller DropColumns .You can completely reshape a table however you want by using the AddColumns, RenameColumns, ShowColumns, or DropColumns function. Dessa funktioner ändrar bara sina utdata, inte deras källa.Again, these functions change only their output, not their source.

Egenskaper för kontroller kan också vara tabeller:Properties of controls can also be tables:

  • Objekt – gäller för gallerier, list rutor och kombinations rutor.Items - Applies to galleries, list boxes, and combo boxes. Den här egenskapen definierar den tabell som galleriet eller listan visar.This property defines the table that the gallery or the list shows.
  • SelectedItems – gäller för List rutor och kombinations rutor.SelectedItems - Applies to list boxes and combo boxes. Den här egenskapen definierar den tabell med objekt som användaren har valt om SelectMultiple har Aktiver ATS.This property defines the table of items that the user has selected if SelectMultiple is enabled.

Beteende formlerBehavioral formulas

Andra funktioner är särskilt utformade för att ändra data och ha sido effekter.Other functions are specifically designed to modify data and have side effects. Eftersom dessa funktioner inte är rena måste du bygga dem noggrant och de kan inte delta i automatisk omräkning av värden i appen.Because these functions aren't pure, you must build them carefully, and they can't participate in automatically recalculating values in the app. Du kan bara använda dessa funktioner inom beteende formler.You can use these functions only within behavioral formulas.

  • Samla in , Rensa , ClearCollect – skapar samlingar, raderar dem och lägger till data till dem.Collect, Clear, ClearCollect - Creates collections, clears them, and adds data to them.
  • Patch – ändrar ett eller flera fält i en post.Patch - Modifies one or more fields in a record.
  • Update , UpdateIf – Uppdaterar poster som matchar en eller flera villkor som du anger.Update, UpdateIf - Updates records that match one or more criteria that you specify.
  • Remove , RemoveIf – Tar bort poster som matchar en eller flera villkor som du anger.Remove, RemoveIf - Deletes records that match one or more criteria that you specify.

Registrera formlerRecord formulas

Du kan också skapa en formel som beräknar data för en enskild post, använder en enskild post som argument och tillhandahåller en enskild post som returvärde.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. Låt oss gå tillbaka till galleriexemplet ovan och använda egenskapen Gallery1.Selected för att visa information från vilken post som helst i galleriet som användaren väljer.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. Lägg till en knappoch ange dess OnSelect -egenskap som den här formeln:Add a Button, and set its OnSelect property to this formula:
    Collect( SelectedRecord; Gallery1.Selected )Collect( SelectedRecord; Gallery1.Selected )

  2. Håll ned Alt-tangenten och välj knappen.While holding down the Alt key, select the button.

  3. Välj SamlingarArkiv-menyn.In the File menu, select Collections.

Den här formeln returnerar en post som inte bara innehåller data från den markerade posten, utan även från alla kontroller i galleriet.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. Posten innehåller t.ex. både en SampleText-kolumn som matchar SampleText-kolumn i den ursprungliga tabellen, och en Subtitle1-kolumn, som representerar den etikett som visar data från den kolumnen.For example, the record contains both a SampleText column, which matches the SampleText column in the original table, and a Subtitle1 column, which represents the label that shows the data from that column. Markera tabellikonen i Subtitle1-kolumnen om du vill öka detaljnivån för dessa data.Select the table icon in the Subtitle1 column to drill into that data.

Anteckning

Subtitle1-kolumnen kan kallas Subtitle2 eller något liknande om du har lagt till andra element än dem som anges i det här ämnet.The Subtitle1 column might be named Subtitle2 or similar if you've added elements other than those that this topic specifies.

Nu när du har den valda posten kan du extrahera enskilda fält från den med .Now that you have the selected record, you can extract individual fields from it with the . -operatorn.operator.

  1. Lägg till en Label -kontroll och flytta den till under galleriet och knappen.Add a Label control, and then move it under the gallery and the button.

  2. Ställ in etikettens Text -egenskap till följande uttryck:Set the label's Text property to this expression:
    "Selected: " & Gallery1.Selected.SampleHeading"Selected: " & Gallery1.Selected.SampleHeading

Du har valt egenskapen Selected, som är en post, och sedan extraherat egenskapen SampleHeading från den.You've taken the Selected property, which is a record, and extracted the SampleHeading property from it.

Du kan också använda en post som en generell container för relaterade namngivna värden.You can also use a record as a general-purpose container for related named values.

  • Om du bygger en formel runt funktionerna UpdateContext och Navigate , så använd en post för att samla in de kontextvariabler som du vill uppdatera.If you build a formula around the UpdateContext and Navigate functions, use a record to gather the context variables that you want to update.
  • Använd egenskapen Updates på en formulärredigeringskontroll om du vill samla in de ändringar som har gjorts av användaren i ett formulär.Use the Updates property on an Edit form control to gather the changes that have been made by the user in a form.
  • Använd Patch -funktionen om du vill uppdatera en datakälla, men du kan även använda den om du vill sammanfoga poster.Use the Patch function to update a data source but also to merge records.

I dessa fall har posterna aldrig ingått i någon tabell.In these cases, the record was never a part of a table.

Postfunktioner och kontrollegenskaperRecord functions and control properties

Funktioner som returnerar poster:Functions that return records:

  • FirstN , LastN – Returnerar den eller de första posterna i tabellen.FirstN, LastN - Returns the first or last record or records of the table.
  • Lookup – Returnerar den första posten från en tabell som matchar ett eller flera kriterier.Lookup - Returns the first record from a table that matches one or more criteria.
  • Patch – Uppdaterar en datakälla eller sammanfogar poster.Patch - Updates a data source or merges records.
  • Defaults – Returnerar standardvärden för en datakälla.Defaults - Returns the default values for a data source.

Egenskaper som returnerar poster:Properties that return records:

  • Selected – Gäller för gallerier och listrutor.Selected - Applies to galleries and list boxes. Returnerar den för tillfället markerade posten.Returns the currently selected record.
  • Updates – Gäller för gallerier.Updates - Applies to galleries. Sammanställer alla ändringar som en användare gör i ett formulär för inmatning av data.Pulls together all the changes that a user makes in a data-entry form.
  • Update – Gäller för indatakontroller, t.ex. textinmatningskontroller och skjutreglage.Update - Applies to input controls such as text-input controls and sliders. Konfigurerar enskilda egenskaper för galleriet så att de samverkar.Sets up individual properties for the gallery to pull together.

Registrera omfångRecord scope

Vissa funktioner utvärderar en formel för alla poster i en tabell individuellt.Some functions operate by evaluating a formula across all the records of a table individually. Formelns resultat används på olika sätt:The formula's result is used in various ways:

  • AddColumns – Formeln innehåller värdet för det fält som har lagts till.AddColumns - Formula provides the value of the added field.
  • Average, Max, Min, Sum, StdevP, VarP – Formeln tillhandahåller de värden som ska sättas samman.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.
  • Filter, Lookup – Formeln anger om posten ska tas med i resultatet.Filter, Lookup - Formula determines if the record should be included in the output.
  • Concat – Formeln avgör vilka strängar som ska sammanfogas.Concat - Formula determines the strings to concatenate together.
  • Distinct – Formeln returnerar ett värde som används för att identifiera dubblettposter.Distinct - Formula returns a value, used to identify duplicate records.
  • ForAll – formeln kan returnera valfritt värde, eventuellt med sido effekter.ForAll - Formula can return any value, potentially with side effects.
  • Sort – Formeln tillhandahåller det värde som posterna ska sorteras efter.Sort - Formula provides the value to sort the records on.
  • With -formeln kan returnera eventuella värden, eventuellt med sido effekter.With - Formula can return any value, potentially with side effects.

I de här formlerna kan du referera till fälten i den post som bearbetas.Inside these formulas, you can reference the fields of the record being processed. Var och en av de här funktionerna skapar ett ”postområde” där formeln utvärderas och där postens fält är tillgängliga som identifierare på toppnivå.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. Du kan också referera till kontrollegenskaper och andra värden i hela din app.You can also reference control properties and other values from throughout your app.

Låt oss t.ex. ta en tabell med Products:For example, take a table of Products:

Om du vill skapa den här exempel tabellen i appen infogar du en knapp, ställer in dess egenskap OnSelect till den här formeln och väljer sedan knappen (klicka på den medan du håller ned Alt-tangenten i PowerApps Studio):To create this example table in your app, insert a button, set its OnSelect property to this formula, and then select the button (click it while you hold down the Alt key in PowerApps Studio):

Set( Products;
    Table(
        { Product: "Widget";    'Quantity Requested': 6;  'Quantity Available': 3 };
        { Product: "Gadget";    'Quantity Requested': 10; 'Quantity Available': 20 };
        { Product: "Gizmo";     'Quantity Requested': 4;  'Quantity Available': 11 };
        { Product: "Apparatus"; 'Quantity Requested': 7;  'Quantity Available': 6 }
    )
)

För att avgöra om någon av dessa produkter hade fler begärda än vad som är tillgängligt:To determine whether any of any of these products had more requested than is available:

Filter( Products; 'Quantity Requested' > 'Quantity Available' )

Det första argumentet som ska filtreras är tabellen med de poster som ska bearbetas, och det andra argumentet är en formel.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Med Filter skapar du ett postområde för att kunna utvärdera den här formeln i vilken fälten för respektive post är tillgängliga. I det här fallet rör det sig om Product, Quantity Requested och Quantity Available.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. Resultatet av jämförelsen avgör om alla poster ska tas med i funktionens resultat:The result of the comparison determines if each record should be included in the result of the function:

Dessutom kan vi beräkna hur mycket av varje produkt som ska beställas:Adding to this example, we can calculate how much of each product to order:

AddColumns( 
    Filter( Products; 'Quantity Requested' > 'Quantity Available' ); 
    "Quantity To Order"; 'Quantity Requested' - 'Quantity Available'
)

Här vi lägger till en beräknad kolumn till resultatet.Here we are adding a calculated column to the result. AddColumns har sitt eget postområde som används för att beräkna skillnaden mellan vad som har begärts och vad som är tillgängligt.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

Slutligen kan vi minska resultat tabellen till bara de kolumner som vi vill ha:Finally, we can reduce the result table to just the columns that we want:

ShowColumns(
    AddColumns(
        Filter( Products; 'Quantity Requested' > 'Quantity Available' );
        "Quantity To Order"; 'Quantity Requested' - 'Quantity Available'
    );
    "Product";
    "Quantity To Order"
)

Observera att vi används dubbla citattecken (") på vissa ställen ovan och enkla citattecken (') på andra.Note that in the above, we used double quotes (") in some places and single quotes (') in other places. Enkla citattecken krävs när du refererar till ett objekts värde, t.ex. ett fält eller en tabell, i vilket objektets namn innehåller ett blanksteg.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. Dubbla citattecken används när vi inte refererar ett objekts värde, men istället talar om det, i synnerhet i situationer i vilka objektet ännu inte finns, som i fallet med 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.

DisambigueringDisambiguation

Fältnamn som lagts till med postområdet åsidosätter samma namn från andra ställen i appen.Field names added with the record scope override the same names from elsewhere in the app. När det händer så kan du fortfarande komma åt värden från utanför postområdet med @ disambigueringsoperatorn:When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • Om du vill komma åt värden från kapslade postområden använder du operatorn @ med namnet på den tabell som bearbetas, och med hjälp av följande mönster:To access values from nested record scopes, use the @ operator with the name of the table being operated upon using this pattern:
    Table [@ FieldName ]Table[@FieldName]
  • Om du vill komma åt globala värden, som datakällor, samlingar och kontextvariabler, använder du mönstret [@ ObjectName ] (utan tabellbeteckning).To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

Om den tabell som åtgärden utförs på är ett uttryck, t.ex. Filter( Table , ... ) , så kan inte någon disambigueringsoperator användas.If the table being operated upon is an expression, such as Filter( Table, ... ), then the disambiguation operator cannot be used. Endast det innersta postområdet har åtkomst till fält från det här tabelluttrycket genom att inte använda disambigueringsoperatorn.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

Låt oss använda samlingen X som exempel:For example, imagine having a collection X:

Du kan skapa den här samlingen med ClearCollect(X; [1; 2]) .You can create this collection with ClearCollect( X; [1; 2] ).

Och så har vi samlingen Y:And another collection Y:

Du kan skapa den här samlingen med ClearCollect(Y; ["A"; "B"]) .You can create this collection with ClearCollect( Y; ["A"; "B"] ).

Dessutom definierar du en Sammanhangs variabel med namnet Value med följande formel: UpdateContext ({Value: "!"})In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

Låt oss lägga ihop dem.Let's put it all together. I det här sammanhanget använder vi då följande formel:In this context, the following formula:

Ungroup(
    ForAll( X;
        ForAll( Y;
            Y[@Value] & Text( X[@Value] ) & [@Value]
        )
    );
    "Value"
)

ger den här tabellen:produces this table:

Vad är det som sker här?What is going on here? Den yttersta ForAll-funktionen definierar ett postområde för X, vilket tillåter åtkomst till Value-fältet för varje post som bearbetas.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. Du kan få åtkomst till helt enkelt genom att använda ordet Value eller genom att använda X[@Value] .It can be accessed by simply using the word Value or by using X[@Value].

Den innersta ForAll-funktionen definierar postområdet för Y. Eftersom den här tabellen har också ett definierat Value-fält, så refererar användningen av Value här till fältet i Y-posten och inte till det från X. Om du vill få åtkomst till Value-fältet för X här måste du använda den längre versionen med disambigueringsoperatorn.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.

Eftersom Y är det innersta postområdet, så kräver åtkomst till fält i den här tabellen inte någon disambiguering, vilket innebär att vi kan använda den här formeln med samma resultat: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:

Ungroup(
    ForAll( X;
        ForAll( Y;
            Value & Text( X[@Value] ) & [@Value]
        )
    );
    "Value"
)

Alla ForAll-postområdena åsidosätter det globala området.All the ForAll record scopes override the global scope. Värde kontext variabeln som vi definierat är inte tillgänglig med namn utan distvetydighets operatorn.The Value context variable we defined isn't available by name without the disambiguation operator. Använd [@Value] för att få åtkomst till det här värdet.To access this value, use [@Value].

Ungroup fören klar resultatet eftersom kapslade ForAll -funktioner resulterar i en kapslad resultat tabell.Ungroup flattens the result because nested ForAll functions result in a nested result table.

Tabeller med en kolumnSingle-column tables

Om du vill använda en enskild kolumn från en tabell använder du ShowColumns -funktionen som i det här exemplet:To operate on a single column from a table, use the ShowColumns function as in this example:

ShowColumns( Products; "Product" )

Den här formeln genererar den här tabellen med en kolumn:This formula produces this single-column table:

Om du vill ha ett kortare alternativ anger du Table. Column, som extraherar tabellen med en kolumn i kolumnen från tabellen.For a shorter alternative, specify Table.Column, which extracts the single-column table of just Column from Table. Den här formeln ger till exempel exakt samma resultat som när du använder ShowColumns.For example, this formula produces exactly the same result as using ShowColumns.

Products.Product

Infogade posterInline records

Du uttrycker poster med hjälp av klammerparenteser som innehåller namngivna fältvärden.You express records by using curly braces that contain named field values. Du kan t.ex. uttrycka den första posten i tabellen i början av det här avsnittet genom att använda följande formel:For example, you can express the first record in the table at the start of this topic by using this formula:

{ Name: "Chocolate"; Price: 3,95; 'Quantity on Hand': 12; 'Quantity on Order': 10 }

Du kan också bädda in formler i andra formler, så som visas i detta exempel:You can also embed formulas within other formulas, as this example shows:

{ Name: First(Products).Name; Price: First(Products).Price * 1,095 }

Du kan kapsla poster genom att kapsla klammerparenteser, så som visas i detta exempel:You can nest records by nesting curly braces, as this example shows:

{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand; 'OnOrder': ThisItem.QuantOnOrder } }

Omsluter varje kolumnnamn som innehåller specialtecken, t.ex. ett blanksteg eller ett kolon med enkla citattecken.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. Om du vill använda ett enkelt citattecken i ett kolumnnamn, så dubblera det.To use a single quote within a column name, double it.

Observera att värdet i kolumnen Price inte innehåller någon valutasymbol, t.ex. dollartecken.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. Den formateringen tillämpas när värdet visas.That formatting will be applied when the value is displayed.

Infogade tabellerInline tables

Du kan skapa en tabell med hjälp av Table -funktionen och en uppsättning poster.You can create a table by using the Table function and a set of records. Du kan uttrycka tabellen i början av det här avsnittet genom att använda följande formel:You can express the table at the start of this topic by using this formula:

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 } 
)

Du kan även kapsla tabeller:You can also nest tables:

Table( 
    { Name: "Chocolate"; 
      'Quantity History': Table( { Quarter: "Q1"; OnHand: 10; OnOrder: 10 };
                                 { Quarter: "Q2"; OnHand: 18; OnOrder: 0 } ) 
    }
)

Infogade värde tabellerInline value tables

Du kan skapa enkolumnstabeller genom att ange värden inom hakparentes.You can create single-column tables by specifying values in square brackets. Den resulterande tabellen har en kolumn med namnet Value.The resulting table has a single column, named Value.

Motsvarar till exempel [ 1; 2; 3; 4 ]denhär tabellen:Table( { Value: 1 }; { Value: 2 }; { Value: 3 }; { Value: 4 } )For example, [ 1; 2; 3; 4 ] is equivalent to Table( { Value: 1 }; { Value: 2 }; { Value: 3 }; { Value: 4 } ) and returns this table: