Déplacer des données entre des collections et des sources de données à l’aide de la fonction Collect

Effectué

Les collections sont une source de données spécifique. Locales à l’application, elles ne sont pas soutenues par une connexion à un service dans le cloud. De ce fait, les informations ne peuvent pas être partagées entre les appareils d’un même utilisateur ni entre des utilisateurs. Les collections peuvent être créées dynamiquement à l’aide de la fonction Collect. Elles n’ont pas besoin d’être établies à l’avance, comme c’est le cas des sources de données basées sur une connexion. En d’autres termes, les collections ne sont que des variables, donc leur contenu n’est pas enregistré si l’utilisateur ferme l’application. Toute autre personne exécutant l’application ne peut accéder aux données qu’elle contient. Pour enregistrer les informations d’une collection, nous devons les écrire dans une source de données. Examinons les deux principaux moyens permettant d’enregistrer des données de collection dans votre source de données.

Utiliser la fonction Collect

La fonction Collect ajoute des enregistrements à une source de données. Celle-ci permet d’ajouter une valeur unique, un enregistrement ou une table à une collection. Elle peut être utilisée pour créer une collection et écrire dans une source de données, telle qu’une liste SharePoint ou une table Dataverse. Elle vous permet d’écrire des données en bloc sans utiliser une fonction ForAll/Patch pour parcourir vos données.

Lorsque vous utilisez la fonction Collect pour écrire dans une source de données, vous pouvez spécifier les éléments en tant qu’enregistrement si les noms de colonne et la structure des données correspondent à votre source. Ainsi, une formule comme celle-ci écrit un seul enregistrement dans vos données, de la même manière qu’une fonction Patch :

Collect('YourDataSource', {Title: 'First Try', StartDate: Today()})

Tant que votre source de données comporte des colonnes intitulées 'Title' et 'StartDate' (et que ces types de données sont respectivement un texte et une date), cette formule crée un enregistrement dans votre source de données dont le titre est 'First Try' et StartDate est la date d’aujourd’hui.

Vous pouvez enchaîner plusieurs enregistrements en les ajoutant après le premier enregistrement, à condition d’écrire le bon type de données dans la bonne colonne, y compris les colonnes obligatoires.

Vous pouvez également écrire une table entière dans votre source de données via l’instruction Collect, à nouveau, tant que la structure des données correspond.

Enfin, vous pouvez utiliser une version simplifiée de la formule pour écrire une collection entière dans votre source de données avec une syntaxe telle que celle-ci :

Collect('YourDataSource', colMyCollection)

Tout comme lorsque nous avons écrit un seul enregistrement dans la source de données, lorsque vous utilisez Collect pour écrire une table entière dans votre source de données, votre structure de données et les noms de colonnes doivent correspondre aux colonnes sur lesquelles vous écrivez. Le principal avantage de la fonction Collect pour l’écriture est que votre code est simple.

En résumé, souvenez-vous de ces trois conditions lorsque vous utilisez la fonction Collect pour écrire dans votre source de données :

  • Les colonnes de votre collection doivent également exister dans la source de données. La source de données peut contenir d’autres colonnes (telles que des colonnes générées par le système), mais les colonnes à partir desquelles vous écrivez dans votre collection doivent être présentes dans la source de données où vous écrivez. (Si votre collection a une colonne de texte appelée Widget, votre source de données doit également avoir une colonne de texte dénommée Widget.)

  • Le type de données (par exemple Texte, Nombre ou Date) de chaque colonne de la collection doit correspondre au type de données de destination.

  • Votre collection doit inclure des données pour toutes les colonnes obligatoires de votre source de données.

Astuce

Si nécessaire, vous pouvez utiliser des fonctions pour transformer votre collection afin qu’elle corresponde à votre source de données :

  • AddColumns
  • DropColumns
  • RenameColumns
  • ShowColumns

Pour en savoir plus, consultez Fonctions AddColumns, DropColumns, RenameColumns et ShowColumns dans Power Apps.

Pour en savoir plus sur la fonction Collect et les collections, voir Documentation Collect.

Patch et ForAll

La fonction Patch vous permet de modifier ou créer un enregistrement dans votre source de données. La fonction ForAll vous permet d’exécuter une formule sur chaque enregistrement d’une table, sachant que les collections sont des tables. Vous pouvez combiner ces fonctions pour mettre à jour votre source de données avec le contenu de votre collection. Bien qu’il y ait plus de codage impliqué par rapport à la technique Collecter, l’utilisation d’une fonction ForAll/Patch fonctionne mieux lorsque vous souhaitez appliquer davantage de logique.

Par exemple, vous pouvez créer une collection nommée collectColorData qui contient trois colonnes : Name, FavoriteColor et UpdateSource. La colonne UpdateSource peut être une colonne de type booléen (true ou false). L’utilisateur de l’application peut mettre à jour la valeur dans la colonne et sélectionner ensuite un bouton appelé Mettre à jour la source. Vous pouvez alors définir la propriété OnSelect de ce bouton sur cette formule :

ForAll(Filter(collectColorData, UpdateSource = true),
Patch(DataSourceName, Defaults(DataSourceName), {NameColumnSource: Name,
FavoriteColorColumnSource: FavoriteColor}))

Cette formule ajoute de nouveaux enregistrements à la source de données nommée DataSourceName et définit les colonnes NameColumnSource et FavoriteColorColumnSource avec les valeurs indiquées dans votre collection, mais uniquement pour les enregistrements où la colonne UpdateSource a été définie sur true.

Cet exemple pourrait être optimisé davantage, mais l’objectif ici est de vous montrer le concept et les procédures pour enregistrer dynamiquement votre collection dans une source de données.

Pour en savoir plus sur ForAll, consultez Documentation ForAll.

Pour en savoir plus sur Patch, consultez Documentation Patch.

Maintenant que nous avons exploré les moyens d’écrire des données d’une collection dans une source de données, et que nous avons vu les raisons de privilégier une méthode spécifique, exerçons-nous à utiliser des données et collections externes.