Forstå lærred – app-tabeller og-poster i Power-appsUnderstand canvas-app tables and records in Power Apps

I Power-apps kan du oprette en lærreds-app, der giver adgang til oplysninger i Microsoft Excel, SharePoint, SQL Server og flere andre kilder, der lagrer data i poster og tabeller.In Power Apps, 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. For at kunne arbejde effektivt med denne type data bør du gennemse de begreber, der ligger til grund for disse strukturer.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • En post indeholder en eller flere kategorier af oplysninger om en person, et sted eller en ting.A record contains one or more categories of information about a person, a place, or a thing. En post kan for eksempel indeholde navnet, e-mailadressen og telefonnummeret på en enkelt kunde.For example, a record might contain the name, the email address, and the phone number of a single customer. Andre værktøjer refererer til en post som en "række" eller et "element".Other tools refer to a record as a "row" or an "item."
  • En tabel indeholder en eller flere poster, der indeholder de samme kategorier af oplysninger.A table holds one or more records that contain the same categories of information. En tabel kan f.eks. indeholde navnene, e-mailadresserne og telefonnumrene på 50 kunder.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

I din app skal du bruge formler for at oprette, opdatere og redigere poster og tabeller.In your app, you'll use formulas to create, update, and manipulate records and tables. Du læser og skriver sandsynligvis data til en ekstern datakilde, som er en udvidet tabel.You'll probably read and write data to an external data source, which is an extended table. Du kan desuden oprette en eller flere interne tabeller, som kaldes samlinger.In addition, you might create one or more internal tables, which are called collections.

Du kan oprette forskellige formler, der tager navnet på en tabel som et argument på samme måde som en formel i Excel tager en eller flere cellereferencer som argumenter.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. Nogle formler i Power-apps returnerer en tabel, der afspejler de øvrige argumenter, du angiver.Some formulas in Power Apps return a table that reflects the other arguments that you specify. Du kan f.eks. oprette en formel:For example, you might create a formula:

  • For at opdatere en post i en tabel ved at angive denne tabel som et af flere argumenter for funktionen Patch .to update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • For at tilføje, fjerne og omdøbe kolonner i en tabel ved at angive en tabel som et argument for 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 af disse funktioner ændrer den oprindelige tabel.None of those functions modifies the original table. Funktionen returnerer i stedet en anden tabel, der er baseret på de argumenter, som du angiver.Instead, the function returns another table based on the other arguments that you specify.

Elementer i en tabelElements of a table

PosterRecords

Hver post indeholder mindst én kategori af oplysninger om en person, et sted eller en ting.Each record contains at least one category of information for a person, a place, or a thing. Ovenstående eksempel viser en post for hvert produkt (Chocolate (Chokolade), Bread (Brød) og Water (Vand)) og en kolonne for hver kategori af oplysninger (Price (Pris), Quantity on hand (Lager) og Quantity on Order (Antal, der er i bestilling)).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 henvise til en post i sig selv uden for konteksten af en tabel ved hjælp af krøllede klammeparenteser.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. Posten { Name: "Strawberries"; Price: 7,99 } er f.eks. ikke tilknyttet en tabel.For example, this record { Name: "Strawberries"; Price: 7,99 } isn't associated with a table. Bemærk, at feltnavne, f.eks Name (Navn) og Price (Pris) i dette eksempel ikke er omsluttet af dobbelte anførselstegn.Note that field names, such as Name and Price in that example, aren't enclosed in double quotation marks.

FelterFields

Et felt er en enkelt oplysning i en post.A field is an individual piece of information in a record. Du kan visualisere denne slags felt som en værdi i en kolonne for en bestemt post.You can visualize this sort of field as a value in a column for a particular record.

På samme måde som et kontrolelement refererer du til et felt i en post ved at bruge operatorenJust as with a control, you refer to a field of a record by using the . . for posten.operator on the record. First(Products).Name returnerer f.eks. feltet Name (Navn) for den første post i tabellen Products (Produkter).For example, First(Products).Name returns the Name field for the first record in the Products table.

Et felt kan indeholde en anden post eller tabel, for eksempel det funktionen GroupBy viser.A field can contain another record or table, as the example for the GroupBy function shows. Du kan indlejre lige så mange niveauer af poster og tabeller, som du vil.You can nest as many levels of records and tables as you want.

KolonnerColumns

En kolonne henviser til det samme felt for en eller flere poster i en tabel.A column refers to the same field for one or more records in a table. I ovenstående eksempel har hvert produkt et prisfelt, og den pris er i den samme kolonne for alle produkter.In the above example, each product has a price field, and that price is in the same column for all products. Ovenstående tabel har fire kolonner, der vises vandret øverst:The above table has four columns, shown horizontally across the top:

  • Name (Navn)Name
  • Price (Pris)Price
  • Quantity on Hand (Lager)Quantity on Hand
  • Quantity on Order (Antal, der er i bestilling)Quantity on Order

Kolonnens navn afspejler felterne i den pågældende kolonne.The column's name reflects the fields in that column.

Alle værdier i en kolonne er af samme datatype.All values within a column are of the same data type. I ovenstående eksempel indeholder kolonnen "Quantity on Hand" (Lager) altid et tal og må ikke indeholde en streng som f.eks "12 enheder" for en post.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ærdien i et felt kan også være tom.The value of any field may also be blank.

Du kan have henvist til kolonner som "felter" i andre værktøjer.You may have referred to columns as "fields" in other tools.

Bemærk

For de SharePoint-og Excel-datakilder, der indeholder kolonnenavne med mellemrum, erstatter Power apps områderne med "_x0020_" .For SharePoint and Excel data sources that contain column names with spaces, Power Apps will replace the spaces with "_x0020_". "Kolonnenavn" i SharePoint eller Excel vises f. eks. som "Column_x0020_Name" i Power-apps, når den vises i datalayoutet eller bruges i en formel.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in Power Apps when displayed in the data layout or used in a formula.

TableTable

En tabel består af en eller flere poster, hver med flere felter, som har ensartede navne på tværs af posterne.A table comprises one or more records, each with multiple fields that have consistent names across the records.

Alle tabeller, der er gemt i en datakilde eller en samling, har et navn, som du kan bruge til at henvise til tabellen og sende dem til funktioner, der bruger tabeller som argumenter.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 også være resultatet af en funktion eller formel.Tables can also be the result of a function or a formula.

Som det fremgår af følgende eksempel, kan du udtrykke en tabel i en formel ved hjælp af funktionen Table med et sæt poster, som du sætter i krøllede klammeparenteser: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 også definere en tabel med en enkelt kolonne tabel med kantede parenteser.You can also define a single-column table with square brackets. En tilsvarende måde at skrive ovenstående på:An equivalent way to write the above:

[ "Strawberry"; "Vanilla" ]

TabelformlerTable formulas

I Excel og Power-apps kan du bruge formler til at manipulere tal og tekststrenge på lignende måder:In Excel and Power Apps, you use formulas to manipulate numbers and strings of text in similar ways:

  • Skriv en værdi i Excel, f.eks. 42 i celle A1, og skriv derefter en formel, f.eks. A1+2 i en anden celle for at få vist værdien 44.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.
  • I Power-apps skal du angive egenskaben default for Slider1 til 42og angive egenskaben text for en etiket til Slider1. value + 2 for at få vist værdien af 44.In Power Apps, 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 begge tilfælde ændres den beregnede værdi automatisk, hvis du ændrer værdierne for argumenterne (for eksempel tallet i celle A1 eller værdien af 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å samme måde kan du bruge formler til at få adgang til og manipulere data i tabeller og poster.Similarly, you can use formulas to access and manipulate data in tables and records. Du kan bruge navnene på tabeller som argumenter i nogle formler, f.eks. Min(Catalog; Price) for at få vist den laveste værdi i kolonnen Price (Pris) i tabellen Catalog (Katalog).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. Andre formler indeholder hele tabeller som returværdier, f.eks. RenameColumns(Catalog; "Price"; "Cost") , som returnerer alle poster fra tabellen Catalog (Katalog), men ændrer navnet på kolonnen Price (Pris) til Cost (Omkostninger).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.

Ligesom med tal genberegnes formler, der omfatter tabeller og poster automatisk, når den underliggende tabel eller post ændres.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Hvis omkostningen for et produkt i tabellen Catalog (Katalog) reduceres til under den tidligere minimumværdi, ændres returværdien for formlen Min automatisk, så den passer til værdien.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.

Lad os gennemgå nogle enkle eksempler.Let's walk through some simple examples.

  1. Opret en tom app til en telefon, og tilføj et lodret kontrolelement af typen Galleri , der indeholder andre kontrolelementer.Create a blank app for a phone, and add a vertical Gallery control that contains other controls.

    Skærmen viser som standard pladsholdertekst fra en tabel med navnet CustomGallerySample.By default, the screen shows placeholder text from a table named CustomGallerySample. Egenskaben Elementer for skærmens Galleri -kontrolelement angives automatisk som den pågældende tabel.The Items property of the screen's Gallery control is automatically set to that table.

    Bemærk

    Nogle kontrolelementer er blevet flyttet rundt og forstørret af illustrationsmæssige årsager.Some controls have been rearranged and enlarged for illustration purposes.

  2. I stedet for at angive egenskaben Items til navnet på en tabel, kan du angive den til en formel, der indeholder navnet på tabellen som et argument som i dette eksempel: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)

    Denne formel indeholder funktionen Sort , som tager navnet på en tabel som sit første argument og navnet på en kolonne i denne tabel som det andet 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 understøtter også et valgfrit tredje argument, der fastsætter, at du vil sortere dataene i faldende rækkefølge.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Angiv egenskaben varer til en formel, der tager formlen fra det forrige trin som et argument og returnerer en tabel som i dette eksempel: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 denne formel kan du bruge funktionen FirstN til at få vist et bestemt antal poster i en tabel.In this formula, you use the FirstN function to show a particular number of records in a table. Du kan bruge funktionen Sort som det første argument for FirstN og et tal (i dette tilfælde 2) som det andet argument, som angiver, hvor mange poster der vises.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.

    Hele formlen returnerer en tabel, der indeholder de første to poster af tabellen CustomGallerySample, der er sorteret efter kolonnen SampleHeading i faldende rækkefølge.The entire formula returns a table that contains the first two records of the CustomGallerySample table, sorted by the SampleHeading column in descending order.

Tabelfunktioner og egenskaber for kontrolelementerTable functions and control properties

Overvej den nederste funktion.Consider the Lower function. Hvis den velkomst variabel indeholder tekststrengen "Hello, World" , returnerer formlen lavere (velkommen) "Hello, World" .If the variable welcome contains the text string "Hello, World", the formula Lower( welcome ) returns "hello, world". Denne funktion ændrer ikke på nogen måde værdien i variablen.This function doesn't, in any way, change the value in that variable. Lavere er en ren funktion, da den kun behandler input og producerer output.Lower is a pure function in that it only processes input and produces output. Det er det hele. den har ingen bivirkninger.That's all; it has no side effects. Alle funktioner i Excel og de fleste funktioner i Power-apps er rene funktioner, hvilket gør det muligt at genberegne projektmappen eller appen automatisk.All functions in Excel and most functions in Power Apps are pure functions, which allow the workbook or the app to be recalculated automatically.

Power Apps tilbyder en række funktioner, der fungerer på tabeller på samme måde.Power Apps offers a set of functions that operate on tables in the same manner. Disse funktioner tager tabeller som input og Filtrer, sorterer, transformerer, reducerer og opsummerer hele tabeller med data.These functions take tables as input and filter, sort, transform, reduce, and summarize entire tables of data. Faktisk kan der også være en tabel med en enkelt kolonne som input, hvis du har lavere og mange andre funktioner, der typisk benytter en enkelt værdi.In fact, Lower and many other functions that typically take a single value can also take a single-column table as input.

  • Sort , Filter – sorterer og filtrerer poster.Sort, Filter - Sorts and filters records.
  • FirstN , LastN – returnerer de første N poster eller de sidste N poster i tabellen.FirstN, LastN - Returns the first N or last N records of the table.
  • Abs , Sqrt , Round , RoundUp , RoundDown – aritmetiske handlinger for hver post i en tabel bestående af én kolonne, der resulterer i en tabel med resultater i én kolonne.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 – strengmanipulationer for hver post i en tabel bestående af én kolonne, der resulterer i en tabel med strenge i én kolonne.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 – for en kolonne strenge og returnerer en tabel bestående af én kolonne, der indholder længden af hver streng.Len - For a column of strings, returns a single-column table that contains the length of each string.
  • Concatenate – sammenkæder flere kolonner strenge, hvilket resulterer i en tabel med én kolonne med strenge.Concatenate - Concatenates multiple columns of strings, resulting in a single-column table of strings.
  • AddColumns , DropColumns , RenameColumns , ShowColumns – kolonnemanipulation af tabellen, som resulterer i en ny tabel med forskellige kolonner.AddColumns, DropColumns, RenameColumns, ShowColumns - Column manipulation of the table, resulting in a new table with different columns.
  • Distinct – fjerner duplikerede poster.Distinct - Removes duplicates records.
  • Shuffle – blander posterne i en vilkårlig rækkefølge.Shuffle - Shuffles records into a random order.
  • HashTags – søger efter hashtags i en streng.HashTags - Searches for hashtags in a string.
  • Errors – leverer fejloplysninger, når du arbejder med en datakilde.Errors - Provides error information when you work with a data source.

Mange af disse funktioner kræver en tabel med en enkelt kolonne som input.Many of these functions take a single-column table as their input. Hvis en hel tabel kun har én kolonne, kan du angive den efter navn.If an entire table has only one column, you can specify it by name. Hvis en tabel indeholder flere kolonner, kan du angive en af disse kolonner ved hjælp af syntaksen table. Column .If a table has multiple columns, you can specify one of those columns by using Table.Column syntax. Products.Name returnerer f. eks. tabellen med en enkelt kolonne med kun navne værdier fra tabellen Products .For example, Products.Name returns the single-column table of only Name values from the Products table.

Du kan ændre en tabel helt, som du vil, ved hjælp af funktionen AddColumns , RenameColumns , show Columns eller drop Columns .You can completely reshape a table however you want by using the AddColumns, RenameColumns, ShowColumns, or DropColumns function. Disse funktioner ændrer kun outputtet, ikke for deres kilde.Again, these functions change only their output, not their source.

Kontrolelementets egenskaber kan også være tabeller:Properties of controls can also be tables:

  • Items – gælder for gallerier, lister og kombinationsbokse.Items - Applies to galleries, list boxes, and combo boxes. Denne egenskab definerer den tabel, som galleriet eller listen viser.This property defines the table that the gallery or the list shows.
  • SelectedItems – gælder for lister og kombinationsbokse.SelectedItems - Applies to list boxes and combo boxes. Denne egenskab definerer den tabel med elementer, som brugeren har valgt, hvis Select multiple er aktiveret.This property defines the table of items that the user has selected if SelectMultiple is enabled.

FunktionsformlerBehavioral formulas

Andre funktioner er specifikt udviklet til at ændre data og have bivirkninger.Other functions are specifically designed to modify data and have side effects. Da disse funktioner ikke er rene, skal du bygge dem omhyggeligt, og de kan ikke deltage i automatisk genberegning af værdier 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 kun bruge disse funktioner i funktionsformler.You can use these functions only within behavioral formulas.

  • Indsaml , Ryd , ClearCollect – opretter samlinger, rydder dem og føjer data til dem.Collect, Clear, ClearCollect - Creates collections, clears them, and adds data to them.
  • Patch – ændrer et eller flere felter i en post.Patch - Modifies one or more fields in a record.
  • Update , UpdateIf – opdaterer de poster, der stemmer overens med et eller flere af de søgekriterier, som du angiver.Update, UpdateIf - Updates records that match one or more criteria that you specify.
  • Remove , RemoveIf – sletter de poster, der stemmer overens med et eller flere af de søgekriterier, som du angiver.Remove, RemoveIf - Deletes records that match one or more criteria that you specify.

PostformlerRecord formulas

Du kan også oprette en formel, der beregner data for en enkelt post, tager en enkelt post som et argument og resulterer i en enkelt post som en returværdi.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. Lad os bruge gallerieksemplet ovenfor igen og egenskaben Gallery1.Selected til at få vist oplysninger fra den post, som brugeren vælger i galleriet.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. Tilføj en knap, og Angiv dens egenskab OnSelect til denne formel:Add a Button, and set its OnSelect property to this formula:
    Collect( SelectedRecord; Gallery1.Selected )Collect( SelectedRecord; Gallery1.Selected )

  2. Vælg knappen, mens du holder Alt-tasten nede.While holding down the Alt key, select the button.

  3. Vælg Collections (Samlinger) i menuen File (Filer).In the File menu, select Collections.

Denne formel returnerer en post, der ikke alene omfatter data fra den post, der aktuelt er valgt i galleriet, men også de enkelte kontrolelementer 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 indeholder f.eks. både kolonnen SampleText (Eksempeltekst), som stemmer overens med kolonnen SampleText i den oprindelige tabel og kolonnen Subtitle1 (Undertekst1), som repræsenterer den mærkat, der viser dataene fra den pågældende kolonne.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. Vælg tabelikonet i kolonnen Subtitle1 (Undertekst1) for at gennemgå disse data.Select the table icon in the Subtitle1 column to drill into that data.

Bemærk

Kolonnen Subtitle1 (Undertekst1) kan være navngivet Subtitle2 eller lignende, hvis du har tilføjet elementer, der er anderledes end dem, der er angivet i dette emne.The Subtitle1 column might be named Subtitle2 or similar if you've added elements other than those that this topic specifies.

Nu hvor du har den valgte post, kan du hente individuelle felter fra den med operatoren .Now that you have the selected record, you can extract individual fields from it with the . .operator.

  1. Tilføj et kontrolelement af typen Mærkat , og flyt det derefter under galleriet og knappen.Add a Label control, and then move it under the gallery and the button.

  2. Angiv mærkatens Text -egenskab som i dette udtryk:Set the label's Text property to this expression:
    "Selected: " & Gallery1.Selected.SampleHeading"Selected: " & Gallery1.Selected.SampleHeading

Du har taget egenskaben Selected, som er en post, og trukket egenskaben SampleHeading ud fra den.You've taken the Selected property, which is a record, and extracted the SampleHeading property from it.

Du kan også bruge en post som en beholder til generel brug til relaterede navngivne værdier.You can also use a record as a general-purpose container for related named values.

  • Hvis du bygger en formel omkring funktionerne UpdateContext og Navigate , kan du bruge en post til at indsamle de kontekstvariabler, som du vil opdatere.If you build a formula around the UpdateContext and Navigate functions, use a record to gather the context variables that you want to update.
  • Brug egenskaben Updates i et kontrolelement til redigering af en formular til at indsamle de ændringer, som brugeren har foretaget i en formular.Use the Updates property on an Edit form control to gather the changes that have been made by the user in a form.
  • Brug funktionen Patch til at opdatere en datakilde, men også til at flette poster.Use the Patch function to update a data source but also to merge records.

I disse tilfælde var posten aldrig en del af en tabel.In these cases, the record was never a part of a table.

Postfunktioner og egenskaber for kontrolelementerRecord functions and control properties

Funktioner, der returnerer poster:Functions that return records:

  • FirstN , LastN – returnerer den eller de første eller sidste poster i tabellen.FirstN, LastN - Returns the first or last record or records of the table.
  • Lookup – returnerer den første post fra en tabel, der stemmer overens med et eller flere kriterier.Lookup - Returns the first record from a table that matches one or more criteria.
  • Patch – opdaterer en datakilde eller fletter poster.Patch - Updates a data source or merges records.
  • Defaults – returnerer standardværdierne for en datakilde.Defaults - Returns the default values for a data source.

Egenskaber, der returnerer poster:Properties that return records:

  • Selected – gælder gallerier og lister.Selected - Applies to galleries and list boxes. Returnerer den aktuelt valgte post.Returns the currently selected record.
  • Updates – gælder gallerier.Updates - Applies to galleries. Samler alle de ændringer, som en bruger foretager i en formular til dataindtastning.Pulls together all the changes that a user makes in a data-entry form.
  • Update – gælder inputkontrolelementer som f.eks. tekstinputkontrolelementer og skydere.Update - Applies to input controls such as text-input controls and sliders. Angiver individuelle egenskaber, som galleriet skal samle.Sets up individual properties for the gallery to pull together.

PostområdeRecord scope

Nogle funktioner fungerer ved at evaluere en formel separat på tværs af alle posterne i en tabel.Some functions operate by evaluating a formula across all the records of a table individually. Formlens resultat bruges på forskellige måder:The formula's result is used in various ways:

  • AddColumns – formlen resulterer i værdien af det tilføjede felt.AddColumns - Formula provides the value of the added field.
  • Average, Max, Min, Sum, StdevP, VarP – formlen giver den værdi, der skal samles.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.
  • Filter, Lookup – formlen afgør, om posten skal inkluderes i outputtet.Filter, Lookup - Formula determines if the record should be included in the output.
  • Concat – formlen afgør de strenge, som skal sammenkædes.Concat - Formula determines the strings to concatenate together.
  • Distinct – formlen returnerer en værdi, der bruges til at identificere duplikerede poster.Distinct - Formula returns a value, used to identify duplicate records.
  • ForAll -formlen kan returnere alle værdier, muligvis med bivirkninger.ForAll - Formula can return any value, potentially with side effects.
  • Sort – formlen leverer den værdi, som posterne skal sorteres efter.Sort - Formula provides the value to sort the records on.
  • With -formlen kan returnere alle værdier, muligvis med bivirkninger.With - Formula can return any value, potentially with side effects.

I disse formler kan du henvise til felterne for den post, der behandles.Inside these formulas, you can reference the fields of the record being processed. Hver af disse funktioner opretter et "postområde", hvor formlen evalueres, og hvor felterne i posten fås som id'er på øverste 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. Du kan også referere til egenskaber for kontrolelementer og andre værdier fra hele din app.You can also reference control properties and other values from throughout your app.

Lad os tage tabellen Products (Produkter):For example, take a table of Products:

Hvis du vil oprette denne eksempeltabel i din app, skal du indsætte en knap, angive dens egenskab OnSelect til denne formel og derefter vælge knappen (Klik på den, mens du holder Alt-tasten nede i Power apps 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 Power Apps 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 }
    )
)

For at finde ud af, om nogen af disse produkter havde mere, end der er tilgængelige:To determine whether any of any of these products had more requested than is available:

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

Det første argument, der skal filtreres, er den tabel med poster, der skal bearbejdes, og det andet argument er en formel.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Filter (Filtrer) opretter et postområde til evaluering af denne formel, hvor felterne for hver post er tilgængelige, i dette tilfælde Product (Produkt), Quantity Requested (Anmodet antal) og Quantity Available (Tilgængeligt antal).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 af sammenligningen bestemmer, om hver post skal medtages i resultatet af funktionen:The result of the comparison determines if each record should be included in the result of the function:

Lad os bygge videre på eksemplet og beregne, hvor meget af hvert produkt vi skal bestille: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'
)

Her føjer vi en beregnet kolonne til resultatet.Here we are adding a calculated column to the result. AddColumns har sit eget postområde til beregning af forskellen mellem, hvad der er blevet anmodet, og hvad der er tilgængeligt.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

Til sidst kan vi reducere resultattabellen til kun de kolonner, du ønsker: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"
)

Bemærk, at vi bruger dobbelte anførselstegn (") nogle steder og et enkelt anførselstegn (') andre steder.Note that in the above, we used double quotes (") in some places and single quotes (') in other places. Enkelte anførselstegn er påkrævede, når der refereres til værdien af et objekt, f.eks et felt eller en tabel, hvor navnet på objektet indeholder et mellemrum.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. Dobbelte anførselstegn benyttes, når vi ikke refererer til værdien af et objekt, men i stedet taler om det, især i situationer, hvor objektet endnu ikke findes, hvilket er tilfældet 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.

Fjernelse af flertydige udtrykDisambiguation

De feltnavne, der tilføjes sammen med postområdet, tilsidesætter de samme navne fra andre steder i appen.Field names added with the record scope override the same names from elsewhere in the app. Når det sker, kan du stadig få adgang til værdierne uden for postområdet med operatoren til @ fjernelse af flertydige udtryk:When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • Du kan få adgang til værdier fra indlejrede postområder ved at bruge operatoren @ med navnet på den tabel, der arbejdes på, ved hjælp af mønsteret:To access values from nested record scopes, use the @ operator with the name of the table being operated upon using this pattern:
    Tabel [@ FieldName ]Table[@FieldName]
  • Du kan få adgang til globale værdier, som f.eks. datakilder, samlinger og kontekstvariabler, ved at bruge mønsteret [@ ObjectName ] (uden en tabelangivelse).To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

Hvis den tabel, der arbejdes med, er et udtryk som f.eks. Filter( Tabel , ... ) , kan operatoren til fjernelse af flertydige udtryk ikke benyttes.If the table being operated upon is an expression, such as Filter( Table, ... ), then the disambiguation operator cannot be used. Det er kun det inderste postområde, der kan få adgang til felter fra dette tabeludtryk ved ikke at bruge operatoren til fjernelse af flertydige udtryk.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

Forestil dig, at du f.eks. har en samling X:For example, imagine having a collection X:

Du kan oprette denne samling med ClearCollect( X; [1; 2] ) .You can create this collection with ClearCollect( X; [1; 2] ).

Og en anden samling Y:And another collection Y:

Du kan oprette denne samling med ClearCollect( Y; ["A"; "B"] ) .You can create this collection with ClearCollect( Y; ["A"; "B"] ).

Derudover skal du definere en kontekstvariabel ved navn Value (Værdi) med denne formel: UpdateContext( {Value: "!"} )In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

Lad os sætte det hele sammen.Let's put it all together. I denne sammenhæng giver følgende formel:In this context, the following formula:

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

denne tabel:produces this table:

Hvad foregår der her?What is going on here? Den yderste ForAll-funktion definerer et postområde for X, der giver adgang til feltet Value (Værdi) for hver post, når de behandles.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. Der kan opnås adgang til feltet ved blot at bruge ordet Value (Værdi) eller ved hjælp af X [@Value] .It can be accessed by simply using the word Value or by using X[@Value].

Den inderste ForAll -funktion definerer et andet post område for Y. Da der også er defineret et værdi felt for denne tabel, refererer værdien her til feltet i Y-posten, og den er ikke længere den ene fra X. Her, hvis du vil have adgang tilfeltet værdi , skal vi bruge den længere version med operatoren til fjernelse af Flertydige udtryk.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 er det inderste postområde, kræver adgang til felter i denne tabel ikke fjernelse af flertydige udtryk, hvilket gør det muligt at benytte denne formel med det samme 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"
)

Alle ForAll-postområderne tilsidesætter det globale område.All the ForAll record scopes override the global scope. Den værdi kontekst variabel, vi har defineret, er ikke tilgængelig efter navn uden operatoren til fjernelse af Flertydige udtryk.The Value context variable we defined isn't available by name without the disambiguation operator. Hvis du vil have adgang til denne værdi, skal du bruge [@Value] .To access this value, use [@Value].

Opdel gruppe samkopierer resultatet, da indlejrede ForAll -funktioner resulterer i en indlejret resultattabel.Ungroup flattens the result because nested ForAll functions result in a nested result table.

Tabeller med en enkelt kolonneSingle-column tables

Hvis du vil arbejde på en enkelt kolonne fra en tabel, skal du bruge funktionen show Columns som i dette eksempel:To operate on a single column from a table, use the ShowColumns function as in this example:

ShowColumns( Products; "Product" )

Denne formel opretter en tabel med en enkelt kolonne:This formula produces this single-column table:

Hvis du vil have et kortere alternativ, skal du angive table. Column, der udtrækker tabellen med en enkelt kolonne i den ene kolonne fra tabellen.For a shorter alternative, specify Table.Column, which extracts the single-column table of just Column from Table. Denne formel giver f. eks. det samme resultat som brug af show Columns.For example, this formula produces exactly the same result as using ShowColumns.

Products.Product

Indbyggede posterInline records

Du udtrykker poster ved hjælp af krøllede klammeparenteser, som indeholder navngivne feltværdier.You express records by using curly braces that contain named field values. Du kan for eksempel udtrykke den første post i tabellen i begyndelsen af dette emne ved hjælp af følgende 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 også integrere formler i andre formler, som dette eksempel viser:You can also embed formulas within other formulas, as this example shows:

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

Du kan indlejre poster ved at indlejre krøllede klammeparenteser, som dette eksempel viser:You can nest records by nesting curly braces, as this example shows:

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

Sæt hvert kolonnenavn, der indeholder et specialtegn, f.eks. et mellemrum eller et kolon, i enkelte anførselstegn.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. Hvis du vil bruge et enkelt anførselstegn inden for et kolonnenavn, skal du fordoble det.To use a single quote within a column name, double it.

Bemærk, at værdien i kolonnen Price (Pris) ikke omfatter et valutasymbol, f.eks. et dollartegn.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. Denne formatering anvendes, når værdien vises.That formatting will be applied when the value is displayed.

Indbyggede tabellerInline tables

Du kan oprette en tabel ved hjælp funktionen Table og et sæt poster.You can create a table by using the Table function and a set of records. Du kan udtrykke tabellen i begyndelsen af dette emne ved hjælp af følgende 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 også indlejre tabeller:You can also nest tables:

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

Indbyggede værdi tabellerInline value tables

Du kan oprette tabeller med én kolonne ved at angive værdier i kantede parenteser.You can create single-column tables by specifying values in square brackets. Den resulterende tabel har en enkelt kolonne med navnet Value (Værdi).The resulting table has a single column, named Value.

[ 1; 2; 3; 4 ] svarer f. eks. til Table( { Value: 1 }; { Value: 2 }; { Value: 3 }; { Value: 4 } ) og returnerer denne tabel:For example, [ 1; 2; 3; 4 ] is equivalent to Table( { Value: 1 }; { Value: 2 }; { Value: 3 }; { Value: 4 } ) and returns this table: