La plupart des applications PowerApps utilisent des informations externes stockées dans des services cloud appelés sources de données. Un exemple courant est une table dans un fichier Excel stocké dans OneDrive Entreprise. Les applications accèdent à ces sources de données à l’aide de connexions.

Cet article décrit les différents types de sources de données et la façon d’utiliser les sources de données de table.

Vous pouvez facilement créer une application qui effectue les fonctions basiques de lecture et d’écriture sur une source de données. Mais parfois, vous préférez contrôler davantage la manière dont vos données circulent dans et en dehors de votre application. Cet article décrit comment les fonctions Patch, DataSourceInfo, Validate et Errors peuvent vous donner plus de contrôle.

Types de sources de données

Les sources de données peuvent être connectées à un service cloud ou être stockées en local dans une application.

Sources de données connectées

Les sources de données les plus courantes sont les tableaux qui vous permettent de récupérer et de stocker des informations. Vous pouvez utiliser des connexions aux sources de données pour lire et écrire des données dans des classeurs Microsoft Excel, des listes SharePoint, des tables SQL et de nombreux autres formats, qui peuvent être stockés dans des services cloud comme OneDrive Entreprise, DropBox, SQL Server, etc.

Les sources de données autres que les tableaux sont le courrier électronique, les calendriers, Twitter et les notifications, mais cet article ne les aborde pas.

Sources de données locales

Les contrôles Gallery, Display form et Edit form vous permettent de créer facilement une application qui lit et écrit des données à partir d’une source de données. Pour commencer, consultez l’article Understand data forms in Microsoft PowerApps (Comprendre les formulaires de données dans Microsoft PowerApps).

Lorsque vous demandez à PowerApps de créer une application à partir des données, ces contrôles sont utilisés. Dans les coulisses, l’application utilise une table interne pour stocker et manipuler les données provenant de la source de données.

Un type spécial de source de données est la collection, qui est stockée en local dans l’application et n’est pas appuyée par une connexion à un service dans le cloud, donc les informations ne peuvent pas être partagées sur plusieurs appareils pour le même utilisateur ou entre les utilisateurs. Les collections peuvent être chargées et enregistrées localement.

Types de tables

Les tables qui sont internes à une application PowerApps sont des valeurs fixes, tout comme un nombre ou une chaîne sont des valeurs. Les tables internes ne sont pas stockées n’importe où, elles existent uniquement dans la mémoire de votre application. Vous ne pouvez pas modifier directement la structure et les données d’une table. À la place, vous pouvez créer une table via une formule : cette formule vous permet d’effectuer une copie modifiée de la table d’origine.

Les tables externes sont stockées dans une source de données pour les partager et les récupérer ultérieurement. PowerApps fournit des « connexions » pour lire et écrire des données stockées. Dans une connexion, vous pouvez accéder à plusieurs tables de données. Vous allez sélectionner les tables à utiliser dans votre application, et chacune sera une source de données distincte.

Pour en savoir plus, l’article Understand tables and records in PowerApps (Comprendre les tables et les enregistrements dans PowerApps) aborde plus en détail les tables internes, mais couvre également les tables externes qui résident dans un service cloud.

Utilisation des tables

Vous pouvez utiliser les sources de données de table de la même façon qu’un table PowerApps interne. À l’instar d’une table interne, chaque source de données comprend des enregistrements, des colonneset des propriétés que vous pouvez utiliser dans les formules. En outre :

  • La source de données a les mêmes noms de colonnes et types de données que la table sous-jacente dans la connexion.

    Remarque : pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, PowerApps 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 PowerApps quand il s’affiche dans la mise en page des données ou est utilisé dans une formule.

  • La source de données est automatiquement chargée à partir du service lorsque l’application est chargée. Vous pouvez forcer l’actualisation des données à l’aide de la fonction Refresh.

  • À mesure que les utilisateurs exécutent une application, ils peuvent créer, modifier et supprimer des enregistrements et transmettre ces modifications à la table sous-jacente dans le service.

    • Les enregistrements peuvent être créés avec les fonctions Patch et Collect.
    • Les enregistrements peuvent être modifiés avec les fonctions Patch, Update et UpdateIf.
    • Les enregistrements peuvent être supprimés avec les fonctions Remove et RemoveIf.
    • Les erreurs lorsque vous utilisez une source de données sont disponibles via la fonction Errors.
  • Les fonctions DataSourceInfo, Defaults et Validate fournissent des informations sur la source de données que vous pouvez utiliser pour optimiser l’expérience utilisateur.

Création de sources de données

PowerApps ne peut pas être utilisé pour créer une source de données connectée, ni pour modifier sa structure ; la source de données doit déjà exister dans un service quelque part. Par exemple, pour créer une table dans un classeur Excel stocké sur OneDrive, vous utilisez tout d’abord Excel Online sur OneDrive pour créer un classeur. Ensuite, vous créez une connexion vers celui-ci à partir de votre application.

Toutefois, les sources de données de collection peuvent être créées et modifiées à l’intérieur d’une application, mais sont uniquement temporaires.

Afficher un ou plusieurs enregistrements

Le diagramme ci-dessus montre comment les informations circulent lorsqu’une application lit les informations contenues dans une source de données :

  • Les informations sont stockées et partagées via un service de stockage (ici, une liste SharePoint d’un site Office 365).
  • Une connexion rend ces informations disponibles pour l’application. La connexion prend en charge l’authentification de l’utilisateur pour accéder aux informations.
  • Lorsque l’application est lancée ou quand vous appuyez sur la fonction Refresh, les informations sont extraites à partir de la connexion vers une source de données dans l’application pour une utilisation locale.
  • Les formules sont utilisées pour lire les informations et les exposer dans des contrôles que l’utilisateur peut voir. Vous pouvez afficher les enregistrements d’une source de données à l’aide d’une galerie sur un écran et en reliant la propriété Items à la source de données : Gallery.Items = DataSource. Vous reliez les contrôles dans la galerie, vers la galerie, à l’aide de la propriété Default des contrôles.
  • La source de données est également une table. Vous pouvez donc utiliser les fonctions Filter, Sort, AddColumns et d’autres pour affiner et compléter la source de données avant de l’utiliser comme un tout. Vous pouvez également utiliser les fonctions Lookup, First, Last et d’autres pour travailler avec des enregistrements individuels.

Modifier un enregistrement

Dans la section précédente, vous avez vu comment lire une source de données. Notez que les flèches dans le diagramme ci-dessus ne vont que dans une seule direction. Les modifications apportées à une source de données ne sont pas transmises via les mêmes formules que celles permettant la récupération des données. Au lieu de cela, de nouvelles formules sont utilisées. Un autre écran, différent de celui permettant de parcourir les enregistrements, est souvent utilisé pour modifier un enregistrement, en particulier sur un appareil mobile.

Notez que, pour modifier un enregistrement existant d’une source de données, l’enregistrement doit initialement provenir de la source de données. L’enregistrement peut avoir traversé une galerie, une variable contextuelle et n’importe quel nombre de formules, mais son origine doit être la source de données. Cela est important, car les informations supplémentaires sont transmises avec l’enregistrement qui les identifie de façon unique, pour s’assurer que vous modifiez le bon enregistrement.

Le diagramme ci-dessus montre comment les informations circulent pour mettre à jour une source de données :

  • Un contrôle Edit form fournit un conteneur pour les cartes d’entrée, qui sont constituées de contrôles d’entrée utilisateur, comme un contrôle d’entrée de texte ou un curseur. Les propriétés DataSource et Item sont utilisées pour identifier l’enregistrement à modifier.
  • Chaque carte d’entrée comprend une propriété Default, qui est généralement définie sur le champ de l’enregistrement ThisItem du formulaire. Les contrôles au sein de la carte d’entrée prennent ensuite leurs valeurs d’entrée à partir de Default. Normalement, vous n’avez pas besoin de modifier cela.
  • Chaque carte d’entrée expose une propriété Update. Cette propriété mappe l’entrée de l’utilisateur à un champ spécifique de l’enregistrement pour l’écriture sur la source de données. Normalement, vous n’avez pas besoin de modifier cela.
  • Un contrôle de bouton ou d’image à l’écran permet à l’utilisateur d’enregistrer les modifications apportées à l’enregistrement. La formule OnSelect appelle la fonction SubmitForm pour faire ce travail. SubmitForm lit toutes les propriétés Update des cartes et les utilise pour écrire dans la source de données.
  • Parfois, certains problèmes se présentent. Une connexion réseau peut être hors service ou un contrôle de validation est effectué par un service que l’application ne connaît pas. Les propriétés Error et ErrorKind du contrôle de formulaire rendent ces informations disponibles pour que vous puissiez les afficher pour l’utilisateur.

Pour un contrôle plus poussé du processus, vous pouvez également utiliser les fonctions Patch et Errors. Le contrôle Edit form expose une propriété Updates afin que vous puissiez lire les valeurs des champs dans le formulaire. Vous pouvez également utiliser cette propriété pour appeler un connecteur personnalisé sur une connexion, en contournant complètement les fonctions Patch et SubmitForm.

Validation

Avant d’apporter une modification à un enregistrement, l’application doit faire ce qu’elle peut pour s’assurer que la modification est acceptable. Il existe deux raisons à cela :

  • Retour immédiat pour l’utilisateur. Le meilleur moment pour résoudre un problème est dès qu’il survient, quand l’utilisateur sait encore de quoi il s’agit. Avec littéralement chaque touche ou combinaison de touches, du texte en rouge peut s’afficher et identifier un problème relatif à l’entrée.
  • Moins de trafic réseau et moins de latence pour l’utilisateur. Davantage de problèmes détectés dans l’application signifie moins de conversations sur le réseau pour détecter et résoudre les problèmes. Chaque conversation prend un certain temps pendant lequel l’utilisateur doit attendre avant de passer à autre chose.

PowerApps propose deux outils pour la validation :

  • La source de données peut fournir des informations sur ce qui est valide et ce qui ne l’est pas. Par exemple, les nombres peuvent avoir des valeurs minimales et maximales, et une ou plusieurs entrées peuvent être nécessaires. Vous pouvez accéder à ces informations avec la fonction DataSourceInfo.
  • La fonction Validate utilise ces mêmes informations pour vérifier la valeur d’une seule colonne ou d’un enregistrement complet.

Gestion des erreurs

Très bien, vous avez validé votre enregistrement. Il est temps de le mettre à jour avec Patch !

Mais, malheureusement, un problème peut subsister. Le réseau est hors service, la validation au niveau du service a échoué, ou l’utilisateur n’a pas les autorisations appropriées, entre autres erreur que votre application peut rencontrer. Elle doit répondre de façon appropriée aux situations d’erreur en fournissant un retour à l’utilisateur et un moyen lui permettant de corriger les problèmes.

Lorsque des erreurs se produisent avec une source de données, votre application enregistre automatiquement les informations d’erreur et les rend disponibles via la fonction Errors. Les erreurs sont associées aux enregistrements ayant des problèmes. Si le problème peut être corrigé par l’utilisateur, comme un problème de validation, il peut à nouveau envoyer l’enregistrement et les erreurs sont effacées.

Si une erreur se produit lorsqu’un enregistrement est créé avec Patch ou Collect, il n’existe aucun enregistrement à associer aux erreurs. Ici, une valeur vide sera renvoyée par Patch et peut être utilisée comme argument d’enregistrement pour Errors. Les erreurs de création sont effacées à l’opération suivante.

La fonction Errors renvoie une table d’informations d’erreur. Ces informations peuvent inclure des informations de colonnes si l’erreur peut être attribuée à une colonne particulière. Utilisez des messages d’erreur au niveau des colonnes dans les contrôles d’étiquettes qui sont proches de l’endroit où la colonne se trouve sur l’écran de modification. Utilisez des messages d’erreur au niveau des enregistrements là où la colonne dans la table d’erreur est vide, dans un emplacement proche du bouton Enregistrer pour l’ensemble de l’enregistrement.

Utilisation de sources de données volumineuses

Lorsque vous créez des rapports à partir de sources de données volumineuses (comptant peut-être des millions d’enregistrements), vous préférez réduire le trafic réseau. Supposons que vous vouliez créer un rapport sur tous les clients ayant un StatusCode de « Platinum » à New York. Et que votre table nommée Customers contient des millions d’enregistrements.

Vous ne souhaitez pas importer ces millions de clients dans votre application, puis choisir ceux que vous souhaitez. Ce que vous voulez, c’est que ce choix se fasse dans le service cloud dans lequel votre table est stockée et que seuls les enregistrements sélectionnés soient envoyés sur le réseau.

La plupart des fonctions que vous pouvez utiliser pour choisir les enregistrements peuvent être déléguées, ce qui signifie qu’elles sont exécutées dans le service cloud. Vous pouvez apprendre à faire cela en lisant l’article Understand delegation (Comprendre la délégation).

Collections

Les collections sont un type spécial de source de données. Elles sont stockées en local dans l’application et ne sont pas appuyées par une connexion à un service dans le cloud, donc les informations ne peuvent pas être partagées sur plusieurs appareils pour le même utilisateur ou entre les utilisateurs. Elles fonctionnent comme toute autre source de données, à quelques exceptions près :

  • Les collections peuvent être créées dynamiquement avec la fonction Collect. Il n’est pas nécessaire qu’elles soient établies à l’avance, à l’inverse des sources de données basées sur une connexion.
  • Les colonnes d’une collection peuvent être modifiées à tout moment à l’aide de la fonction Collect.
  • Les collections autorisent les enregistrements en double. Plusieurs copies du même enregistrement peuvent exister dans une collection. Les fonctions telles que Remove fonctionneront sur la première correspondance qu’elles trouvent, sauf si l’argument All est fourni.
  • Vous pouvez utiliser les fonctions SaveData et LoadData pour enregistrer et recharger une copie de la collection. Les informations sont stockées dans un emplacement privé auquel les autres utilisateurs, applications ou appareils n’ont pas accès.
  • Vous pouvez utiliser les contrôles Export et Import pour enregistrer et recharger une copie de la collection dans un fichier avec lequel l’utilisateur peut interagir.

Pour plus d’informations sur l’utilisation d’une collection en tant que source de données, consultez l’article Create and update a collection in your app (Créer et mettre à jour une collection dans votre application).

Les collections sont couramment utilisées pour conserver l’état global de l’application. Consultez l’article Understand variables in PowerApps (Comprendre les variables dans PowerApps) pour connaître les options disponibles pour gérer l’état.