Comprendre les tables et enregistrements des applications canevas dans Power Apps

Dans Power Apps, vous pouvez créer une application canevas qui accède à des informations dans Microsoft Excel, SharePoint, SQL Server et plusieurs autres sources qui stockent des données dans des enregistrements et des tables. Pour travailler plus efficacement avec ce type de données, passez en revue les concepts qui sont à la base de ces structures.

  • Un enregistrement contient une ou plusieurs catégories d’informations sur une personne, un lieu ou une chose. Par exemple, un enregistrement peut contenir le nom, l’adresse e-mail et le numéro de téléphone d’un client donné. Les autres outils désignent un enregistrement comme une « ligne » ou un « article ».
  • Une table contient un ou plusieurs enregistrements qui contiennent les mêmes catégories d’informations. Par exemple, un tableau peut contenir le nom, l’adresse e-mail et le numéro de téléphone de 50 clients.

Dans votre application, vous utilisez des formules pour créer des enregistrements et des tables, les manipuler et les mettre à jour. Vous lisez et écrivez probablement des données dans une source de données externe, qui est une table étendue. De plus, vous pouvez créer une ou plusieurs tables internes, appelées collections.

Vous pouvez créer diverses formules qui prennent le nom d’une table en tant qu’argument, à l’image d’une formule dans Excel qui prend une ou plusieurs références de cellule en tant qu’arguments. Certaines formules dans Power Apps retournent une table qui reflète les autres arguments que vous spécifiez. Par exemple, vous pouvez créer une formule pour les raisons suivantes :

  • Mettre à jour un enregistrement dans un tableau en spécifiant ce tableau comme étant un des arguments de la fonction Patch
  • Ajouter, supprimer et renommer les colonnes d’un tableau en spécifiant ce tableau en tant qu’argument de la fonction AddColumns, DropColumns ou RenameColumns. Aucune de ces fonctions ne modifie le tableau d’origine. Au lieu de cela, la fonction retourne un autre tableau basé sur les autres arguments que vous spécifiez.

Éléments d'une table

Enregistrements

Chaque enregistrement contient au moins une catégorie d’informations pour une personne, un lieu ou une chose. L’exemple ci-dessus montre un enregistrement par produit (Chocolat, Pain et Eau) et une colonne par catégorie d’informations (Prix, Quantité disponible et Quantité en commande).

Dans une formule, vous pouvez référencer un enregistrement par lui-même, en dehors du contexte d’un tableau, en utilisant des accolades. Par exemple, l’enregistrement { Name: "Strawberries", Price: 7.99 } n’est associé à aucun tableau. Notez que les noms de champs, tels que Name et Price dans cet exemple, ne sont pas placés entre guillemets.

Champs

Un champ est un élément d’information particulier dans un enregistrement. Vous pouvez visualiser ce type de champ en tant que valeur dans la colonne d’un enregistrement particulier.

Tout comme avec un contrôle, vous faites référence à un champ d’un enregistrement à l’aide de l'opérateur . sur l’enregistrement. Par exemple, First(Products).Name retourne le champ Name pour le premier enregistrement du tableau Products.

Un champ peut contenir un autre enregistrement ou une autre table (voir l’exemple de la fonction GroupBy). Vous pouvez imbriquer autant de niveaux d’enregistrements et de tableaux que vous le souhaitez.

Colonnes

Une colonne fait référence au même champ d’un ou plusieurs enregistrements dans une table. Dans l’exemple ci-dessus, chaque produit possède un champ pour le prix et ce prix est indiqué dans la même colonne pour tous les produits. La table ci-dessus comporte quatre colonnes, affichées horizontalement en haut :

  • Nom
  • Prix
  • Quantité disponible
  • Quantité en commande

Le nom de la colonne reflète les champs qu'elle contient.

Toutes les valeurs au sein d’une colonne sont du même type de données. Dans l’exemple ci-dessus, la colonne Quantité disponible contient toujours un nombre et ne peut pas contenir une chaîne, comme « 12 unités », pour un seul enregistrement. La valeur d’un champ peut également être vide.

Dans d’autres outils, il se peut que les colonnes soient dénommées « champs ».

Notes

Pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, Power Apps remplace les espaces par « _x0020_ ». Par exemple, le libellé « Nom de colonne » dans SharePoint ou Excel apparaît sous la forme « Nom_x0020_de_x0020_colonne » dans Power Apps quand il s’affiche dans la mise en page des données ou est utilisé dans une formule.

Table

Un tableau comprend un ou plusieurs enregistrements, chacun disposant de plusieurs champs qui ont des noms cohérents entre les enregistrements.

Un tableau stocké dans une source de données ou une collection a un nom, que vous utilisez pour faire référence au tableau et le transmettre à des fonctions qui utilisent des tableaux en tant qu’arguments. Les tableaux peuvent également être le résultat d’une fonction ou d’une formule.

Comme dans l’exemple suivant, vous pouvez faire référence à un tableau dans une formule à l’aide de la fonction Table avec un jeu d’enregistrements, que vous insérez entre des accolades :

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

Vous pouvez également définir un tableau à une seule colonne avec des crochets. Méthode équivalente pour écrire la formule ci-dessus :

[ "Strawberry", "Vanilla" ]

Formules de tableau

Dans Excel et Power Apps, vous utilisez des formules pour manipuler des nombres et des chaînes de texte de la même manière :

  • Dans Excel, tapez une valeur, telle que 42, dans la cellule A1, puis tapez une formule, telle que A1+2, dans une autre cellule, pour afficher la valeur 44.
  • Dans Power Apps, définissez la propriété Default de Slider1 sur 42 et définissez la propriété Text d’une étiquette sur Slider1.Value + 2 pour afficher la valeur 44.

Dans les deux cas, la valeur calculée change automatiquement si vous modifiez les valeurs des arguments (par exemple, le nombre indiqué dans la cellule A1 ou la valeur de Slider1).

De même, vous pouvez utiliser des formules pour atteindre et manipuler des données dans des tableaux et des enregistrements. Vous pouvez utiliser des noms de tableaux en tant qu’arguments dans des formules, comme Min(Catalog, Price) pour afficher la valeur la plus petite dans la colonne Price du tableau Catalog. D’autres formules fournissent des tableaux entiers comme valeurs de retour, tels que RenameColumns(Catalog, "Price", "Cost"), qui retourne tous les enregistrements du tableau Catalog, mais remplace le nom de la colonne Price par Cost.

Tout comme avec des nombres, les formules qui impliquent des tableaux et des enregistrements sont recalculées automatiquement à mesure que le tableau ou l’enregistrement sous-jacent change. Si la valeur de coût d’un produit du tableau Catalog passe en dessous du minimum précédent, la valeur de retour de la formule Min change automatiquement.

Examinons quelques exemples simples.

  1. Créez une application vide pour un téléphone, puis ajoutez un contrôle Gallery vertical qui contient d’autres contrôles.

    Par défaut, l’écran affiche dans l’espace réservé le texte provenant d’un tableau nommé CustomGallerySample. Ce tableau est automatiquement affecté à la propriété Items du contrôle Gallery de l’écran.

    Notes

    Certains contrôles ont été réorganisés et agrandis aux fins d’illustration.

  2. Au lieu de définir la propriété Items sur le nom d’un tableau, définissez-la sur une formule qui inclut le nom du tableau en tant qu’argument, comme dans l’exemple ci-dessous :

    Sort(CustomGallerySample, SampleHeading, Descending)

    Cette formule intègre la fonction Sort, qui prend le nom d’un tableau en tant que premier argument et le nom d’une colonne de ce tableau en tant que deuxième argument. La fonction prend également en charge un troisième argument facultatif qui stipule que vous souhaitez trier les données dans l’ordre décroissant.

  3. Définissez la propriété Items sur une formule qui utilise la formule de l’étape précédente en tant qu’argument et retourne un tableau, comme dans cet exemple :

    FirstN(Sort(CustomGallerySample, SampleHeading, Descending), 2)

    Dans cette formule, vous utilisez la fonction FirstN pour afficher un certain nombre d’enregistrements dans un tableau. Vous utilisez la fonction Sort en tant que premier argument de FirstN et un nombre (dans ce cas, 2) en tant que deuxième argument, qui spécifie le nombre d’enregistrements à afficher.

    L’intégralité de la formule retourne un tableau qui contient les deux premiers enregistrements du tableau CustomGallerySample, triés par la colonne SampleHeading dans l’ordre décroissant.

Fonctions de tableau et propriétés de contrôle

Prendre en compte la fonction Lower. Si la variable bienvenue contient la chaîne de texte "Hello, World", la formule Lower( welcome ) renvoie "hello, world". Cette fonction ne modifie en rien la valeur de cette variable. Lower est une fonction pure en ce qu'elle ne traite que les entrées et produit les sorties. C'est tout ; cela n'a pas d'effets secondaires. Toutes les fonctions dans Excel et la plupart des fonctions dans Power Apps sont des fonctions pures qui permettent de recalculer automatiquement le classeur ou l'application.

Power Apps offre un ensemble de fonctions qui fonctionnent sur les tables de la même manière. Ces fonctions prennent les tableaux en entrée et filtrent, trient, transforment, réduisent et résument des tableaux entiers de données. En réalité, Lower et de nombreuses autres fonctions qui prennent généralement une seule valeur peuvent également prendre une table à une seule colonne en entrée.

  • Sort, Filter - Trie et filtre les enregistrements.
  • FirstN, LastN - Retourne les N premiers ou derniers enregistrements du tableau.
  • Abs, Sqrt, Round, RoundUp, RoundDown - Opérations arithmétiques sur chaque enregistrement d’un tableau à une seule colonne, qui génèrent un tableau de résultats constitué d’une seule colonne.
  • Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - Manipulations de chaîne sur chaque enregistrement d’un tableau à une seule colonne, qui génèrent un tableau de chaînes constitué d’une seule colonne.
  • Len - Pour une colonne de chaînes, retourne un tableau à une seule colonne qui contient la longueur de chaque chaîne.
  • Concatenate - Concatène plusieurs colonnes de chaînes et retourne un tableau de chaînes à une seule colonne.
  • AddColumns, DropColumns, RenameColumns, ShowColumns - Manipulation de colonne du tableau, ce qui entraîne un nouveau tableau avec différentes colonnes.
  • Distinct - Supprime les doublons d’enregistrements.
  • Shuffle - Mélange les enregistrements dans un ordre aléatoire.
  • HashTags - Recherche des hashtags dans une chaîne.
  • Errors - Fournit des informations sur les erreurs lorsque vous utilisez une source de données.

Beaucoup de ces fonctions prennent comme entrée une table à une seule colonne. Si une table entière n'a qu'une seule colonne, vous pouvez la spécifier par son nom. Si une table a plusieurs colonnes, vous pouvez spécifier l'une de ces colonnes en utilisant la syntaxe Table.Colonne. Par exemple, Products.Name renvoie la table à colonne unique de valeurs Nom uniquement de la table Produits.

Vous pouvez remodeler complètement un tableau comme vous le souhaitez en utilisant la fonction AddColumns, RenameColumns, ShowColumns, ou DropColumns. Encore une fois, ces fonctions ne modifient que leur sortie, pas leur source.

Les propriétés des contrôles peuvent également être des tables :

  • Items - S’applique aux galeries, listes déroulantes et zones de liste déroulantes. Cette propriété définit la table que la galerie ou la liste affiche.
  • SelectedItems - S’applique aux listes déroulantes et zones de liste déroulantes. Cette propriété définit le tableau des éléments que l'utilisateur a sélectionné si SelectMultiple est autorisé.

Formules comportementales

D'autres fonctions sont spécifiquement conçues pour modifier les données et avoir des effets secondaires. Étant donné que ces fonctions ne sont pas pures, vous devez les créer avec soin et elles ne peuvent pas participer au recalcul automatique des valeurs dans l'application. Utilisez ces fonctions ensemble uniquement dans les formules comportementales.

  • Collect, Clear, ClearCollect - Crée des collections, les efface et leur ajoute des données.
  • Patch - Modifie un ou plusieurs champs dans un enregistrement.
  • Update, UpdateIf - Met à jour les enregistrements qui correspondent à un ou plusieurs critères que vous spécifiez.
  • Remove, RemoveIf - Supprime les enregistrements qui correspondent à un ou plusieurs critères que vous spécifiez.

Formules d’enregistrement

Vous pouvez également créer une formule qui calcule les données d’un enregistrement spécifique, prend un enregistrement donné en tant qu’argument et fournit un enregistrement individuel comme valeur de retour. Revenons à l’exemple de la galerie ci-dessus et utilisons la propriété Gallery1.Selected pour afficher des informations à partir d’un enregistrement que l’utilisateur sélectionne dans cette galerie.

  1. Ajoutez un contrôle Button, puis définissez sa propriété OnSelect sur la formule suivante :
    Collect( SelectedRecord, Gallery1.Selected )

  2. Cliquez sur le bouton tout en maintenant la touche Alt enfoncée.

  3. Dans le menu Fichier, sélectionnez Collections.

Cette formule retourne un enregistrement qui inclut non seulement les données de l’enregistrement actuellement sélectionné dans la galerie, mais également chaque contrôle dans cette galerie. Par exemple, l’enregistrement contient à la fois une colonne SampleText qui correspond à la colonne SampleText de la table d’origine, et une colonne Subtitle1 qui représente l’étiquette qui affiche les données de cette colonne. Sélectionnez l’icône de tableau dans la colonne Subtitle1 pour explorer les données au niveau du détail.

Notes

La colonne Subtitle1 peut porter le nom Subtitle2 ou un nom similaire si vous avez ajouté des éléments autres que ceux spécifiés dans cette rubrique.

Maintenant que vous avez sélectionné l’enregistrement, vous pouvez extraire des champs individuels à partir de celui-ci avec l’opérateur . .

  1. Ajoutez un contrôle Label, puis déplacez-le sous la galerie et le bouton.

  2. Définissez la propriété Text de l’étiquette avec l’expression suivante :
    "Selected: " & Gallery1.Selected.SampleHeading

Vous avez pris la propriété Selected, qui est un enregistrement, puis extrait la propriété SampleHeading à partir de celle-ci.

Vous pouvez également utiliser un enregistrement en tant que conteneur à usage général pour les valeurs nommées associées.

  • Si vous créez une formule autour des fonctions UpdateContext et Navigate, utilisez un enregistrement pour rassembler les variables de contexte que vous souhaitez mettre à jour.
  • Utilisez la propriété Updates sur un contrôle Modifier le formulaire pour rassembler les modifications qui ont été apportées par l’utilisateur dans un formulaire.
  • Utilisez la fonction Patch pour mettre à jour une source de données ou fusionner des enregistrements.

Dans ce cas, l’enregistrement n’a jamais fait partie d’un tableau.

Fonctions d’enregistrement et propriétés de contrôle

Fonctions qui retournent des enregistrements :

  • FirstN, LastN - Retourne le ou les premiers ou derniers enregistrements du tableau.
  • Lookup - Retourne le premier enregistrement du tableau qui correspond à un ou plusieurs critères.
  • Patch - Met à jour une source de données ou fusionne des enregistrements.
  • Defaults - renvoie les valeurs par défaut d'une source de données.

Propriétés qui retournent des enregistrements :

  • Selected - S’applique aux galeries et zones de liste. Retourne l’enregistrement actuellement sélectionné.
  • Updates - S’applique aux galeries. Rassemble toutes les modifications qu’un utilisateur effectue dans un formulaire de saisie de données.
  • Update - S’applique aux contrôles d’entrée tels que des curseurs et contrôles de saisie de texte. Définit les propriétés individuelles de la galerie à rassembler.

Étendue de l’enregistrement

Certaines fonctions opèrent en évaluant une formule dans tous les enregistrements d’un tableau de façon individuelle. Le résultat de la formule est utilisé de différentes manières :

  • AddColumns - La formule fournit la valeur du champ ajouté.
  • Average, Max, Min, Sum, StdevP, VarP - La formule fournit les valeurs à agréger.
  • Filter, Lookup - La formule détermine si l’enregistrement doit être inclus dans la sortie.
  • Concat - La formule détermine les chaînes à concaténer.
  • Distinct - La formule retourne une valeur, utilisée pour identifier les enregistrements en double.
  • ForAll - La formule peut retourner une valeur, éventuellement avec des effets secondaires.
  • Sort - La formule fournit la valeur sur laquelle trier les enregistrements.
  • With - La formule peut retourner une valeur, éventuellement avec des effets secondaires.

À l’intérieur de ces formules, vous pouvez référencer les champs de l’enregistrement qui est en cours de traitement. Chacune de ces fonctions crée une « étendue d’enregistrement » dans laquelle la formule est évaluée et où les champs de l’enregistrement sont disponibles en tant qu’identificateurs de niveau supérieur. Vous pouvez également référencer les propriétés de contrôle et d'autres valeurs à partir de votre application.

Par exemple, prenez un tableau de produits :

Pour créer cet exemple de tableau dans votre application, insérez un bouton, définissez sa propriété OnSelect de cette formule, puis sélectionnez le bouton (cliquez dessus tout en maintenant la touche Alt enfoncée dans 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 }
    )
)

Pour déterminer si le nombre de produits demandés est supérieur au nombre de produits disponibles :

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

Le premier argument à filtrer (Filter) est le tableau d’enregistrements à utiliser et le deuxième argument est une formule. Filter crée une étendue d’enregistrement pour l’évaluation de cette formule où les champs de chaque enregistrement sont disponibles, dans ce cas Product, Quantity Requested et Quantity Available. Le résultat de la comparaison détermine si chaque enregistrement doit être inclus dans le résultat de la fonction :

Continuez avec cet exemple et calculez la quantité de chaque produit à commander :

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

Ici, ajoutez une colonne calculée au résultat. AddColumns a sa propre étendue d’enregistrement qu’elle utilise pour calculer la différence entre ce qui a été demandé et ce qui est disponible.

Enfin, vous pouvez réduire le tableau de résultats aux colonnes dont vous avez besoin :

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

Notez que dans l’exemple ci-dessus, nous avons utilisé des guillemets doubles (") dans certains endroits et des guillemets simples (') ailleurs. Les guillemets simples sont requis lorsque vous référencez la valeur d’un objet, comme un champ ou un tableau, où le nom de l’objet contient un espace. Des guillemets doubles sont utilisés non pas pour faire référence à la valeur d’un objet, mais plutôt pour en parler, en particulier dans les situations où l’objet n’existe pas encore, comme dans le cas de AddColumns.

Lever les ambiguïtés

Les noms de champs ajoutés à l'étendue d'enregistrement remplacent les mêmes noms qui se trouvent ailleurs dans l'application. Dans ce cas, vous pouvez toujours accéder aux valeurs en dehors de l’étendue d’enregistrement avec l’opérateur de levée d’ambiguïtés @ :

  • Pour accéder aux valeurs des étendues d'enregistrements imbriquées, utilisez l'opérateur @ avec le nom de la table actuellement utilisé à l'aide de ce modèle :
    Table[@NomChamp]
  • Pour accéder à des valeurs globales, telles que des sources de données, des collections et des variables de contexte, utilisez le modèle [@NomObjet] (sans désignation du tableau).

Si le tableau actuellement utilisé est une expression, comme Filter( Table, ... ), l’opérateur de levée d’ambiguïté ne peut pas être utilisé. Seule l’étendue d’enregistrement la plus profonde permet d’accéder aux champs de cette expression de tableau, sans utiliser l’opérateur de levée d’ambiguïté (disambiguation).

Par exemple, imaginez que vous avez une collection X :

Vous pouvez créer cette collection avec ClearCollect( X, [1, 2] ).

Et une autre collection Y :

Vous pouvez créer cette collection avec ClearCollect( Y, ["A", "B"] ).

En outre, définissez une variable de contexte nommée Value avec cette formule : UpdateContext( {Value: "!"} )

Résumons. Dans ce contexte, la formule suivante :

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

génère ce tableau :

Que se passe-t-il ici ? La fonction ForAll la plus extérieure définit une étendue d’enregistrement pour X, en permettant d’accéder au champ Value de chaque enregistrement à mesure qu’il est traité. Celui-ci est accessible en utilisant simplement le mot Value ou à l’aide de X[@Value].

La fonction ForAll la plus profonde définit une autre portée d'enregistrement pour Y. Étant donné que ce tableau a également un champ Valeur défini, l'utilisation de Valeur se réfère ici au champ dans l'enregistrement Y et non plus celui de X. Ici, pour accéder au champ Valeur de X, nous devons utiliser la version plus longue avec l'opérateur de levée d'ambiguïté.

Étant donné que Y est l’étendue d’enregistrement la plus intérieure, l’accès aux champs de ce tableau ne nécessite pas de levée d’ambiguïté, ce qui vous permet d’utiliser la formule suivante avec le même résultat :

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

Toutes les étendues d’enregistrement ForAll remplacent l’étendue globale. La variable contextuelle Value que vous avez définie n’est pas disponible par son nom sans l’opérateur de levée d’ambiguïté. Pour accéder à cette valeur, utilisez [@Value].

Ungroup aplatit le résultat, car les fonctions ForAll imbriquées entraînent un tableau de résultats imbriqué.

Tables à une seule colonne

Pour opérer sur une seule colonne d'une table, utilisez la fonction ShowColumns comme dans cet exemple :

ShowColumns( Products, "Product" )

Cette formule produit ce tableau à une seule colonne :

Pour une alternative plus courte, spécifiez Table.Column, qui extrait la table à une seule colonne de Column de Table. Par exemple, cette formule produit exactement le même résultat qu'en utilisant ShowColumns.

Products.Product

Enregistrements en ligne

Vous faites référence à des enregistrements en utilisant des accolades qui contiennent des valeurs de champ nommées. Par exemple, vous pouvez faire référence au premier enregistrement du tableau présenté au début de cette rubrique à l’aide de la formule suivante :

{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Vous pouvez également incorporer des formules dans d’autres formules, comme le montre cet exemple :

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

Vous pouvez imbriquer des enregistrements en imbriquant des accolades, comme le montre cet exemple :

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

Placez chaque nom de colonne qui contient un caractère spécial, un espace ou un signe deux-points entre des guillemets simples. Pour utiliser un seul guillemet dans un nom de colonne, double-cliquez dessus.

Notez que la valeur de la colonne Price n’inclut pas de symbole monétaire, comme le signe dollar. Cette mise en forme est appliquée lorsque la valeur est affichée.

Tables en ligne

Vous pouvez créer un tableau à l’aide de la fonction Table et d’un jeu d’enregistrements. Vous pouvez exprimer le tableau présenté au début de cette rubrique à l’aide de la formule suivante :

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

Vous pouvez également imbriquer des tableaux :

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

Tables de valeurs en ligne

Vous pouvez créer des tables à une seule colonne en spécifiant des valeurs entre crochets. La table qui en résulte a une seule colonne nommée Value.

Par exemple, [ 1, 2, 3, 4 ] est équivalent à Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) et renvoie cette table :