Grundlegendes zu Tabellen und Datensätzen in PowerAppsUnderstand tables and records in PowerApps

Sie können Apps erstellen, die auf Informationen in Microsoft Excel, SharePoint, SQL Server und anderen Quellen zugreifen, die Daten in Datensätzen und Tabellen speichern.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. Um möglichst effizient mit diesen Daten umzugehen, machen Sie sich mit den Konzepten vertraut, die diesen Strukturen zugrunde liegen.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • Ein Datensatz enthält mindestens eine Kategorie von Informationen zu einer Person, einem Ort oder einem Gegenstand.A record contains one or more categories of information about a person, a place, or a thing. Ein Datensatz kann z.B. den Namen, die E-Mail-Adresse und die Telefonnummer eines einzelnen Kunden enthalten.For example, a record might contain the name, the email address, and the phone number of a single customer. Andere Tools beziehen sich auf einen Datensatz als „Zeile“ oder „Element“.Other tools refer to a record as a "row" or an "item."
  • Eine Tabelle enthält mindestens einen Datensatz, der dieselben Informationskategorien enthält.A table holds one or more records that contain the same categories of information. Eine Tabelle kann z.B. die Namen, die E-Mail-Adressen und die Telefonnummern von 50 Kunden enthalten.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

In der App verwenden Sie Formeln zum Erstellen, Aktualisieren und Bearbeiten von Datensätzen und Tabellen.In your app, you'll use formulas to create, update, and manipulate records and tables. Daten werden wahrscheinlich in eine externe Datenquelle gelesen und geschrieben, und zwar in eine erweiterte Tabelle.You'll probably read and write data to an external data source, which is an extended table. Darüber hinaus können Sie eine oder mehrere interne Tabellen erstellen, die Sammlungen genannt werden.In addition, you might create one or more internal tables, which are called collections.

Sie können eine Vielzahl von Formeln erstellen, die den Namen einer Tabelle als Argument annehmen, so wie eine Formel in Excel eine oder mehrere Zellbezüge als Argumente akzeptiert.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. Einige Formeln in PowerApps geben eine Tabelle zurück, die die andere Argumente als die von Ihnen angegebenen zeigt.Some formulas in PowerApps return a table that reflects the other arguments that you specify. Sie können beispielsweise eine Formel erstellen:For example, you might create a formula:

  • einen Datensatz in einer Tabelle zu aktualisieren, indem Sie diese Tabelle als eines von mehreren Argumente für die Patch-Funktion angeben.to update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • Spalten in einer Tabelle hinzufügen, entfernen und umbenennen, indem Sie diese Tabelle als Argument für die Funktionen AddColumns, DropColumns oder RenameColumns angeben.to add, remove, and rename columns in a table by specifying that table as an argument for the AddColumns, DropColumns, or RenameColumns function. Keine dieser Funktionen verändert die ursprüngliche Tabelle.None of those functions modifies the original table. Stattdessen gibt die Funktion eine andere Tabelle auf Grundlage der anderen, von Ihnen angegebenen Argumente zurück.Instead, the function returns another table based on the other arguments that you specify.

Elemente einer TabelleElements of a table

DatensätzeRecords

Jeder Datensatz enthält mindestens eine Kategorie von Informationen zu einer Person, einem Ort oder einem Gegenstand.Each record contains at least one category of information for a person, a place, or a thing. Im obigen Beispiel für jedes Produkt ein Datensatz (Chocolate (Schokolade), Bread (Brot) und Water (Wasser)) und eine Spalte für jede Informationskategorie vorhanden (Price (Preis), Quantity on Hand (Lagerbestand) und Quantity on Order (bestellte Menge)).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 einer Formel können Sie mit geschweiften Klammern auf einen Datensatz selbst, außerhalb eines Tabellenkontexts verweisen.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. Angenommen, der Datensatz { Name: "Strawberries", Price: 7.99 } (Name: "Erdbeeren", Preis: 7.99) ist nicht mit einer Tabelle verknüpft.For example, this record { Name: "Strawberries", Price: 7.99 } isn't associated with a table.

FelderFields

Ein Feld ist eine einzelne Information in einem Datensatz.A field is an individual piece of information in a record. Sie können diese Art von Feld als Wert in einer Spalte eines bestimmten Datensatzes visuell darstellen.You can visualize this sort of field as a value in a column for a particular record.

Wie mit einem Steuerelement verweisen Sie auf ein Feld, indem Sie den .-Just as with a control, you refer to a field of a record by using the . Operator auf einen Datensatz anwenden.operator on the record. First(Products).Name gibt beispielsweise das Feld Name für den ersten Datensatz in der Tabelle Products (Produkte) zurück.For example, First(Products).Name returns the Name field for the first record in the Products table.

Ein Feld kann einen anderen Datensatz oder eine andere Tabelle enthalten, wie im Beispiel zur GroupBy-Funktion dargestellt.A field can contain another record or table, as the example for the GroupBy function shows. Sie können beliebig viele Ebenen von Datensätzen und Tabellen verschachteln.You can nest as many levels of records and tables as you want.

SpaltenColumns

Eine Spalte bezieht sich auf das gleiche Feld für einen oder mehrere Datensätze in einer Tabelle.A column refers to the same field for one or more records in a table. Im obigen Beispiel verfügt jedes Produkt über eine Preisfeld, und der Preis befindet sich für alle Produkte in der gleichen Spalte.In the above example, each product has a price field, and that price is in the same column for all products. Die zuvor genannte Tabelle weist vier Spalten auf, deren Namen horizontal ganz oben dargestellt sind:The above table has four columns, shown horizontally across the top:

  • NameName
  • Price (Preis)Price
  • Quantity on Hand (Lagerbestand)Quantity on Hand
  • Quantity on Order (Bestellte Menge)Quantity on Order

Der Spaltenname spiegelt die Felder in dieser Spalte wider.The column's name reflects the fields in that column.

Alle Werte innerhalb einer Spalte gehören dem gleichen Datentyp an.All values within a column are of the same data type. Im obigen Beispiel enthält die Spalte „Quantity on Hand“ immer enthält eine Zahl wie „12 Einheiten“, niemals eine Zeichenfolge, für einen Datensatz.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. Der Wert eines Felds kann auch leer sein.The value of any field may also be blank.

In anderen Tools können Spalten „Felder“ genannt werden.You may have referred to columns as "fields" in other tools.

Hinweis

Bei Excel- oder SharePoint-Datenquellen, die Spaltennamen mit Leerzeichen enthalten, ersetzt PowerApps die Leerzeichen durch "_X0020_".For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". "Name der Spalte" in SharePoint oder Excel wird beispielsweise in PowerApps bei Anzeige im Datenlayout oder Verwendung in einer Formel als "Name_x0020_der_x0020_Spalte" angezeigt.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.

TabelleTable

Eine Tabelle umfasst mindestens einen Datensatz, jeder mit mehreren Feldern, die datensatzübergreifend konsistente Namen aufweisen.A table comprises one or more records, each with multiple fields that have consistent names across the records.

Alle Tabellen, die in einer Datenquelle oder eine Sammlung gespeichert sind, haben einen Namen, den Sie dazu verwenden können, um auf die Tabelle zu verweisen und sie an Funktionen zu übergeben, die Tabellen als Argumente akzeptieren.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 können auch das Ergebnis einer Funktion oder eine Formel sein.Tables can also be the result of a function or a formula.

Sie können wie im folgenden Beispiel eine Tabelle in einer Formel ausdrücken, indem Sie die Table-Funktion mit einer Reihe von Datensätzen verwenden, die Sie in geschweiften Klammern ausdrücken: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" } )Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

Sie können auch eine einspaltige Tabelle mit eckigen Klammern definieren.You can also define a single-column table with square brackets. Alternativ können Sie den obigen Ausdruck wie folgt schreiben:An equivalent way to write the above:

[ "Strawberry", "Vanilla" ][ "Strawberry", "Vanilla" ]

TabellenformelnTable formulas

In Excel und PowerApps verwenden Sie Formeln zum Bearbeiten von Zahlen und Textzeichenfolgen auf ähnliche Weise:In Excel and PowerApps, you use formulas to manipulate numbers and strings of text in similar ways:

  • Geben Sie in Excel in Zelle A1 einen Wert ein, z.B. 42, und geben Sie dann in eine andere eine Formel, z.B. A1+2, ein, um den Wert 44 anzuzeigen.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.
  • Legen Sie in PowerApps die Default-Eigenschaft von Slider1 auf 42 fest, und legen Sie die Text-Eigenschaft eines Schiebereglers auf Slider1.Value + 2, um den Wert 44 anzuzeigen.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 beiden Fällen ändert sich der berechnete Wert automatisch, wenn die Werte der Argumente geändert werden (z.B. die Zahl in Zelle A1 oder der Wert von 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).

Sie können Formeln auf ähnliche Weise verwenden, um auf Daten in Tabellen und Datensätzen zuzugreifen und diese zu bearbeiten.Similarly, you can use formulas to access and manipulate data in tables and records. In einigen Formeln können Sie Tabellennamen wie Min(Catalog, Price) als Argumente verwenden, um den niedrigsten Wert in der Spalte Price der Catalog-Tabelle anzuzeigen.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 Formeln stellen ganze Tabellen als Rückgabewerte bereit, wie z.B. RenameColumns(Catalog, "Price", "Cost"), womit alle Datensätze aus der Catalog-Tabelle zurückgegeben werden, jedoch der Name der Spalte Price in Cost (Kosten) geändert wird.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.

Ebenso wie Zahlen, werden Formeln, die Tabellen und Datensätze enthalten, automatisch neu berechnet, wenn die zugrunde liegenden Tabelle oder der zugrunde liegende Datensatz geändert wird.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Wenn die Kosten eines Produkts in die Catalog-Tabelle unter den vorherigen Mindestwert sinken, wird der Rückgabewert der Min-Formel automatisch geändert und angepasst.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.

Lassen Sie einige einfache Beispiele ansehen.Let's walk through some simple examples.

  1. Fügen Sie eine Textkatalog-Steuerelement hinzu, und legen Sie dessen Items-Eigenschaft auf den Namen einer Tabelle fest.Add a Text gallery control, and set its Items property to the name of a table.

    Der Katalog zeigt standardmäßig Platzhaltertext aus einer Tabelle namens TextualGallerySample an.By default, the gallery shows placeholder text from a table named TextualGallerySample. Die Items-Eigenschaft des Katalogs wird automatisch auf die Tabelle festgelegt.The Items property of the gallery is automatically set to that table.

    Hinweis

    Einige Steuerelemente wurden neu angeordnet und zur Veranschaulichung vergrößert.Some controls have been rearranged and enlarged for illustration purposes.

  2. Statt die Items-Eigenschaft auf den Namen einer Tabelle festzulegen, legen Sie sie auf eine Formel fest, die den Namen der Tabelle als Argument enthält, wie in diesem Beispiel: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)

    Diese Formel beinhaltet die Sort-Funktion, die den Namen einer Tabelle als erstes Argument und der Name einer Spalte in dieser Tabelle als zweites Argument akzeptiert.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. Die Funktion unterstützt auch ein optionales drittes Argument, das vorschreibt, dass die Daten in absteigender Reihenfolge sortiert werden sollen.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Legen Sie die Items-Eigenschaft auf eine Formel fest, die die Formel aus dem vorherigen Schritt als Argument akzeptiert und eine Tabelle zurückgibt, wie im folgenden Beispiel: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 dieser Formel verwenden Sie die Funktion FirstN, um eine bestimmte Anzahl von Datensätzen in einer Tabelle anzuzeigen.In this formula, you use the FirstN function to show a particular number of records in a table. Verwenden Sie die Sort-Funktion als erstes Argument für FirstN und eine Zahl (in diesem Fall 2) als das zweite Argument, das angibt, wie viele Datensätze angezeigt werden sollen.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.

    Die gesamte Formel gibt eine Tabelle zurück, die ersten beiden Datensätze der TextualGallerySample-Tabelle enthält, sortiert nach der Spalte Heading (Überschrift) in absteigender Reihenfolge.The entire formula returns a table that contains the first two records of the TextualGallerySample table, sorted by the Heading column in descending order.

Tabellenfunktionen und SteuerelementeigenschaftenTable functions and control properties

Viele Funktionen in PowerApps akzeptieren den Namen einer Tabelle als Argument, erstellen eine zweite Tabelle, die dieselben Daten enthält, bearbeiten die neue Tabelle auf Grundlage der anderen Argumente und geben dann das Ergebnis zurück.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. Diese Funktionen ändern nicht die ursprüngliche Tabelle, selbst wenn es sich um eine Datenquelle handelt.These functions don't modify the original table, even if it's a data source.

  • Sort, Filter: sortieren und filtern DatensätzeSort, Filter - Sorts and filters records.
  • FirstN, LastN: geben die ersten N oder letzten N Datensätze einer Tabelle zurückFirstN, LastN - Returns the first N or last N records of the table.
  • Abs, Sqrt, Round, RoundUp, RoundDown: arithmetische Vorgänge auf jeden Datensatz einer einspaltigen Tabelle mit einer einspaltigen ErgebnistabelleAbs, 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: Bearbeitung von Zeichenfolgen in jedem Datensatz einer einspaltigen Tabelle mit einer einspaltigen Ergebnistabelle aus ZeichenfolgenLeft, 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: gibt für eine Spalte von Zeichenfolgen eine einspaltige Tabelle zurück, die die Länge einer jeden Zeichenfolge enthält.Len - For a column of strings, returns a single-column table that contains the length of each string.
  • Concatenate: verkettet mehrere Zeichenfolgenspalten und ergibt eine einspaltige Tabelle mit ZeichenfolgenConcatenate - Concatenates multiple columns of strings, resulting in a single-column table of strings.
  • AddColumns, DropColumns, RenameColumns, ShowColumns: bearbeiten Spalten der Tabelle und ergeben eine neue Tabelle mit unterschiedlichen SpaltenAddColumns, DropColumns, RenameColumns, ShowColumns - Column manipulation of the table, resulting in a new table with different columns.
  • Distinct: entfernt doppelte DatensätzeDistinct - Removes duplicates records.
  • Shuffle: mischt die Reihenfolge von Datensätze zufälligShuffle - Shuffles records into a random order.
  • HashTags: sucht in einer Zeichenfolge nach HashtagsHashTags - Searches for hashtags in a string.
  • Error: stellt bei der Arbeit mit einer Datenquelle Fehlerinformationen bereitErrors - Provides error information when you work with a data source.

Sie können die Funktion auf eine Tabelle ausführen, die mehrere Spalten enthält, selbst wenn die Funktion eine einzelne Spalte als Argument erfordert.You can run a function on a table that contains multiple columns, even if the function requires a single column as an argument. Um eine einzelne Spalte aus einer Tabelle mit mehreren Spalten zu extrahieren, verwenden Sie die Funktion ShowColumns als Argument für die Funktion, die Sie verwenden möchten, so wie in diesem Beispiel: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:
Lower( ShowColumns( Products, "Name" ) )Lower( ShowColumns( Products, "Name" ) )

Diese Formel erstellt eine einspaltige Tabelle, die alle Daten aus der Spalte Name der Tabelle Products (Produkte) enthält, jedoch alle Großbuchstaben in Kleinbuchstaben konvertiert.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. Bei Angabe einer Tabelle als Argument für die Funktionen AddColumns, RenameColumns oder DropColumns können Sie die Tabelle nach Ihren Vorstellungen komplett umgestalten.If you specify a table as an argument for the AddColumns, RenameColumns, or DropColumns function, you can completely reshape that table however you want.

Wenn Sie eine Datenquelle als Argument für eine dieser Funktionen angeben, werden die Datensätze der Datenquelle geändert und der neue Wert der Datenquelle im Allgemeinen als Tabelle zurückgegeben.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.

  • Collect, Clear, ClearCollect: erstellen, löschen und fügen zu einer Sammlung hinzuCollect, Clear, ClearCollect - Creates, clears, and adds to a collection.
  • Update, UpdateIf: aktualisiert Datensätze, die mindestens einem von Ihnen angegebenen Kriterium entsprechenUpdate, UpdateIf - Updates records that match one or more criteria that you specify.
  • Remove, RemoveIf: löscht Datensätze, die mindestens einem von Ihnen angegebenen Kriterium entsprechenRemove, RemoveIf - Deletes records that match one or more criteria that you specify.

Die folgenden Steuerelemente weisen Eigenschaften auf, die Tabellen sind:The following controls have properties that are tables:

  • Items: gilt für Kataloge und Listenfelder.Items - Applies to galleries and list boxes. Tabelle, die im Katalog angezeigt werden sollTable to display in the gallery.
  • SelectedItems: gilt für Listenfelder.SelectedItems - Applies to list boxes. Tabelle der Elemente, die der Benutzer ausgewählt hat.Table of items that the user has selected.

DatensatzformelnRecord formulas

Sie können auch eine Formel erstellen, die Daten für einen einzelnen Datensatz berechnet, einen einzelnen Datensatz als Argument akzeptiert und einen einzelnen Datensatz als Rückgabewert bereitstellt.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. Lassen Sie uns zum Katalogbeispiel zurückkehren und die Gallery1.Selected-Eigenschaft zum Anzeigen von Informationen aus einem beliebigen Datensatz verwenden, den der Benutzer aus dem Katalog ausgewählt hat.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. Fügen Sie eine Schaltfläche hinzu, und legen Sie ihre Eigenschaft OnSelect auf diese Formel fest:Add a button, and set its OnSelect property to this formula:
    Collect( SelectedRecord, Gallery1.Selected )Collect( SelectedRecord, Gallery1.Selected )

  2. Wenn die Schaltfläche nicht ausgewählt ist, wählen Sie sie durch einen Klick aus, und klicken Sie erneut darauf, um die Formel auszuführen.If the button isn't selected, click it to select it, and then click it again to run the formula.

  3. Klicken Sie im Menü Datei auf Sammlungen.In the File menu, select Collections.

Diese Formel gibt einen Datensatz zurück, der nicht nur die Daten aus dem Datensatz enthält, die derzeit im Katalog ausgewählt ist, sondern auch jedes Steuerelement in diesem Katalog.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. Der Datensatz enthält z.B. sowohl eine Text-Spalte, die der Text-Spalte in der ursprünglichen Tabelle entspricht, als auch eine Body1-Spalte, die die Bezeichnung darstellt, die die Daten aus dieser Spalte enthält.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. Wählen Sie das Tabellensymbol in der Body1-Spalte aus, um diese Daten detaillierter zu analysieren.Select the table icon in the Body1 column to drill into that data.

Da Sie nun über den ausgewählten Datensatz verfügen, können Sie mit dem .-OperatorNow that you have the selected record, you can extract individual fields from it with the . fest.operator.

  1. Drücken Sie die ESC-TASTE, um zum Standard-Arbeitsbereich zurückzukehren, und fügen Sie dann eine Bezeichnung unterhalb des Katalogs ein.Press Esc to return to the default workspace, and then add a label below the gallery.

  2. Legen Sie die Label-Eigenschaft des Textfelds auf diese Formel fest:Set the Text property of the label to this formula:
    Gallery.Selected.HeadingGallery.Selected.Heading

Sie haben aus der Selected-Eigenschaft, die einen Datensatz darstellt, die Heading-Eigenschaft extrahiert.You've taken the Selected property, which is a record, and extracted the Heading property from it.

Sie können einen Datensatz auch als einen Allzweckcontainer für verwandte benannte Werte verwenden.You can also use a record as a general-purpose container for related named values.

  • Wenn Sie eine Formel um die Funktionen UpdateContext und Navigate erstellen, verwenden Sie einen Datensatz, um die Kontextvariablen zu erfassen, die Sie aktualisieren möchten.If you build a formula around the UpdateContext and Navigate functions, use a record to gather the context variables that you want to update.
  • Wenden Sie die Updates-Eigenschaft auf ein Formular bearbeiten-Steuerelement an, um die Änderungen zu erfassen, die vom Benutzer in einem Formular vorgenommen wurden.Use the Updates property on an Edit form control to gather the changes that have been made by the user in a form.
  • Verwenden Sie die Patch-Funktion, um eine Datenquelle zu aktualisieren und um Datensätze zusammenführen.Use the Patch function to update a data source but also to merge records.

In diesen Fällen war der Datensatz niemals Teil einer Tabelle.In these cases, the record was never a part of a table.

Datensatzfunktionen und SteuerelementeigenschaftenRecord functions and control properties

Funktionen, die Datensätze zurückgeben:Functions that return records:

  • FirstN, LastN: geben den ersten oder letzten Datensatz oder Datensätze der Tabelle zurückFirstN, LastN - Returns the first or last record or records of the table.
  • Lookup: gibt den ersten Datensatz aus einer Tabelle zurück, die mindestens einem Kriterium entsprichtLookup - Returns the first record from a table that matches one or more criteria.
  • Patch: aktualisiert eine Datenquelle oder führt Datensätze zusammenPatch - Updates a data source or merges records.
  • Defaults: gibt die Standardwerte für eine Datenquelle zurückDefaults - Returns the default values for a data source.

Eigenschaften, die Datensätze zurückgeben:Properties that return records:

  • Selected: gilt für Kataloge und Listenfelder.Selected - Applies to galleries and list boxes. Gibt den aktuell ausgewählten Datensatz zurückReturns the currently selected record.
  • Updates: gilt für Kataloge.Updates - Applies to galleries. Zieht allen Änderungen, die ein Benutzer in einem Dateneingabeformular vornimmtPulls together all the changes that a user makes in a data-entry form.
  • Update: gilt für Eingabesteuerelemente wie Texteingabe-Steuerelemente und Schieberegler.Update - Applies to input controls such as text-input controls and sliders. Richtet einzelne, zusammenzustellende Eigenschaften für den Katalog einSets up individual properties for the gallery to pull together.

DatensatzebeneRecord scope

Einige Funktionen werten eine Formel in allen Datensätzen einer Tabelle einzeln aus.Some functions operate by evaluating a formula across all the records of a table individually. Das Ergebnis der Formel wird auf verschiedene Weise verwendet:The formula's result is used in various ways:

  • Filter, Lookup: Die Formel bestimmt, ob der Datensatz in die Ausgabe aufgenommen werden soll.Filter, Lookup - Formula determines if the record should be included in the output.
  • Sort: Die Formel stellt den Wert bereit, nach dem die Datensätze sortiert werden sollen.Sort - Formula provides the value to sort the records on.
  • Concat: Die Formel bestimmt die zu verkettenden Zeichenfolgen.Concat - Formula determines the strings to concatenate together.
  • ForAll: Die Formel kann einen beliebigen Wert zurückgeben, u.U. mit Nebeneffekten.ForAll - Formula can return any value, potentially with a side effect.
  • Distinct: Die Formel gibt einen Wert zurück, mit dem doppelte Datensätze ermittelt werden können.Distinct - Formula returns a value, used to identify duplicate records.
  • AddColumns: Die Formel stellt den Wert des hinzugefügten Felds bereit.AddColumns - Formula provides the value of the added field.
  • Average, Max, Min, Sum, StdevP, VarP: Die Formeln stellen den zu aggregierenden Wert bereit.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.

Innerhalb dieser Formeln können Sie auf die Felder des aktuell verarbeiteten Datensatzes verweisen.Inside these formulas, you can reference the fields of the record being processed. Jede dieser Funktionen erstellt eine „Datensatzebene“, in dem die Formel ausgewertet wird und in dem die Felder des Datensatzes als Bezeichner der obersten Ebene verfügbar sind.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. Sie können aus der gesamten App auch auf Steuerelementeigenschaften und andere Werte verweisen.You can also reference control properties and other values from throughout your app.

Nehmen Sie z.B. die Tabelle Products:For example, take a table of Products:

Um festzustellen, ob bei einem dieser Produkte die Nachfrage das Angebot überstieg, verwenden Sie diese Formel:To determine if any of any of these products had more requested than is available:

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

Das erste Argument für Filter ist die Tabelle von Datensätzen, die verarbeitet wird, und das zweite Argument ist eine Formel.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Filter erstellt eine Datensatzebene für die Auswertung dieser Formel, in dem die Felder jedes Datensatzes verfügbar sind, in diesem Fall Product, Quantity Requested (Nachgefragte Menge) und Quantity Available (verfügbare Menge).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. Das Ergebnis des Vergleichs bestimmt, ob jeder Datensatz in das Ergebnis der Funktion aufgenommen werden soll:The result of the comparison determines if each record should be included in the result of the function:

Außerdem können wir berechnen, wie viel von jedem Produkt bestellt werden soll: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' )AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' )

Hier wird dem Ergebnis eine berechnete Spalte hinzugefügt.Here we are adding a calculated column to the result. AddColumns verfügt über eine eigene Datensatzebene, die zum Berechnen des Unterschiedes zwischen dem Angeforderten und dem Verfügbaren verwendet wird.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

Schließlich kann die Ergebnistabelle auf nur bestimmte Spalten reduziert werden:Finally, we can reduce the result table to just the columns that we desire:

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

Beachten Sie, dass wir oben an einigen Stellen doppelte Anführungszeichen (") und an anderen einfache Anführungszeichen (') verwendet haben.Note that in the above, we used double quotes (") in some places and single quotes (') in other places. Einfache Anführungszeichen sind beim Verweisen auf den Wert eines Objekts wie ein Feld oder eine Tabelle erforderlich, wenn der Name des Objekts ein Leerzeichen enthält.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. Doppelte Anführungszeichen werden verwendet, wenn nicht auf den Wert eines Objekts verweisen wird, sondern darüber gesprochen. Dies kommt vor allem dann vor, wenn das Objekt noch nicht vorhanden ist, wie bei 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.

MehrdeutigkeitsvermeidungDisambiguation

Feldnamen, die mit auf Datensatzebene hinzugefügt wurden, haben Vorrang vor denselben Namen von woanders in der App.Field names added with the record scope override the same names from elsewhere in the app. In diesem Fall können Sie weiterhin von außerhalb der Datensatzebene mithilfe des @-Operators zur Mehrdeutigkeitsvermeidung auf Werte zugreifen:When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • Verwenden Sie zum Zugreifen auf Werte aus geschachtelten Datensatzbereichen den @-Operator mit dem Namen der jeweiligen Tabelle, indem Sie das Muster Table[@FieldName*] nutzen.To access values from nested record scopes, use the @ operator with the name of the table being operated upon using the pattern Table[@FieldName].
  • Verwenden Sie zum Zugreifen auf globale Werte, z.B. Datenquellen, Sammlungen und Kontextvariablen, das Muster [@ObjectName] (ohne Tabellenbezeichnung).To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

Wenn es sich bei der gerade verarbeiteten Tabelle um einen Ausdruck wie Filter( Tabelle, ... ) handelt, kann der Operator zur Mehrdeutigkeitsvermeidung nicht verwendet werden.If the table being operated upon is an expression, such as Filter( table, ... ), then the disambiguation operator cannot be used. Nur die innerste Datensatzebene kann auf Felder aus diesem Tabellenausdruck zugreifen, indem der Operator zur Mehrdeutigkeitsvermeidung nicht verwendet wird.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

Angenommen, Sie haben eine Sammlung X:For example, imagine having a collection X:

Sie können diese Sammlung mit ClearCollect( Y, ["A", "B"] ) erstellen.You can create this collection with ClearCollect( X, [1, 2] ).

Und eine weitere Sammlung Y:And another collection Y:

Sie können diese Sammlung mit ClearCollect( Y, ["A", "B"] ) erstellen.You can create this collection with ClearCollect( Y, ["A", "B"] ).

Definieren Sie darüber hinaus eine Kontextvariable namens Value mit dieser Formel: UpdateContext( {Value: "!"} ).In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

Lassen Sie uns alle Puzzleteile zusammensetzen.Let's put it all together. In diesem Kontext ergibt die folgende Formel:In this context, the following formula:

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

die folgende Tabelle:produces this table:

Was ist hier passiert?What is going on here? Die äußerste ForAll-Funktion definiert eine Datensatzebene für X und erlaubt den Zugriff auf das Value-Feld jedes Datensatzes während der Verarbeitung.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. Der Zugriff erfolgt einfach mithilfe des Wortes Value oder mithilfe von X[@Value].It can be accessed by simply using the word Value or by using X[@Value].

Die innerste ForAll-Funktion definiert eine andere Datensatzebene für Y. Da für diese Tabelle auch ein Value-Feld definiert wurde, wird bei der Verwendung von Value auf das Feld im Datensatz von Y verwiesen, nicht mehr auf den von X. Um hier auf das Value-Feld von X zuzugreifen, muss die längere Version mit dem Operator zur Mehrdeutigkeitsvermeidung verwendet werden.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.

Da Y die innerste Datensatzebene darstellt, ist beim Zugriff auf Felder dieser Tabelle keine Mehrdeutigkeitsvermeidung erforderlich. Die Verwendung dieser Formel erzielt daher dasselbe Ergebnis: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" )Ungroup( ForAll( X, ForAll( Y, Value & Text( X[@Value] ) & [@Value] ) ), "Value" )

Alle Datensatzebenen von ForAll sind dem globalen Bereich übergeordnet.All the ForAll record scopes override the global scope. Die von uns definierte Value-Kontextvariable ist ohne den Operator zur Mehrdeutigkeitsvermeidung nicht anhand des Namens verfügbar.The Value context variable we defined is not available by name without the disambiguation operator. Um auf diesen Wert zugreifen, muss [@Value] verwendet werden.To access this value we must use [@Value].

Ungroup vereinfacht das Ergebnis, da geschachtelte ForAll-Funktionen eine geschachtelte Tabelle ergeben.Ungroup flattens the result, since nested ForAll functions will result in a nested result table.

InlinesyntaxInline syntax

DatensätzeRecords

Datensätze werden mit geschweiften Klammern ausgedrückt, die die Namen von Feldwerten enthalten.You express records by using curly braces that contain named field values. Sie können den ersten Datensatz in der Tabelle am Anfang dieses Themas z.B. mit dieser Formel ausdrücken: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 }{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Sie können Formeln auch in andere Formeln einbetten, wie in diesem Beispiel gezeigt:You can also embed formulas within other formulas, as this example shows:

{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

Datensätze lassen sich auch schachteln, indem geschweifte Klammern geschachtelt werden, wie in diesem Beispiel gezeigt:You can nest records by nesting curly braces, as this example shows:

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

Schließen Sie jeden Spaltenname, die ein Sonderzeichen wie ein Leerzeichen oder einen Doppelpunkt enthält, in einfache Anführungszeichen ein.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. Um ein einfaches Anführungszeichen in einem Spaltennamen zu verwenden, verdoppeln Sie es.To use a single quote within a column name, double it.

Beachten Sie, dass der Wert in der Price-Spalte kein Währungssymbol wie ein Dollarzeichen enthält.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. Die Formatierung wird angewendet, wenn der Wert angezeigt wird.That formatting will be applied when the value is displayed.

TabellenTables

Mithilfe mit der Table-Funktion und einem Satz von Datensätzen können Sie eine Tabelle erstellen.You can create a table by using the Table function and a set of records. Die Tabelle zu Beginn dieses Themas lässt sich mit dieser Formel ausdrücken: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 } )
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 } )

Sie können Tabellen auch schachteln:You can also nest tables:

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

WerttabellenValue tables

Sie können einspaltige Tabellen erstellen, indem Sie Werte in eckigen Klammern angeben.You can create single-column tables by specifying values in square brackets. Die daraus resultierende Tabelle enthält eine einzelne Spalte namens Value.The resulting table has a single column, named Value.

[ 1, 2, 3, 4 ] entspricht beispielsweise Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) und gibt diese Tabelle zurück:For example, [ 1, 2, 3, 4 ] is equivalent to Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) and returns this table: