Fonctions SaveData et LoadData dans Power Apps

Enregistre et recharge un collection à partir d'un appareil local.

Description

La fonction SaveData stocke et nomme une collection pour une utilisation ultérieure.

La fonction LoadData recharge une collection précédemment enregistrée avec SaveData selon son nom. Vous ne pouvez pas utiliser cette fonction pour charger une collection à partir d'une autre source.

Notes

Le nom partagé entre Enregistrer des données et LoadData est une clé, pas un nom de fichier. Cela n'a pas besoin d'être complexe car les noms sont uniques à chaque application et il n'y a aucun risque de conflit de noms. Le nom ne doit contenir aucun de ces caractères : *".?:\<>|/.

Utilisez ces fonctions pour améliorer les performances de démarrage de l'application en :

  • Mise en cache des données dans la formule App.OnStart au premier essai.
  • Rechargement du cache local lors des prochaines exécutions.

Vous pouvez également utiliser ces fonctions pour ajouter des capacités hors ligne simples à votre application.

Vous ne pouvez pas utiliser ces fonctions dans un navigateur lorsque :

  • Création de l'application dans Power Apps Studio.
  • Exécution de l'application dans le lecteur web.

Pour tester votre application, exécutez-la dans Power Apps Mobile sur un appareil iPhone ou Android.

Ces fonctions sont limitées par la quantité de mémoire d'application disponible car elles fonctionnent sur une collection en mémoire. La mémoire disponible peut varier en fonction de facteurs tels que :

  • L'appareil et le système d'exploitation.
  • La mémoire que le lecteur Power Apps utilise.
  • Complexité de l'application avec écrans et commandes.

Testez votre application avec les scénarios attendus sur le type d'appareils que vous attendez de l'application lorsqu'elle stocke des données volumineuses. Attendez-vous à avoir généralement entre 30 Mo et 70 Mo de mémoire disponible.

Ces fonctions dépendent de la collection implicitement définie avec Collect ou ClearCollect. Vous n'avez pas besoin d'appeler Collecte ou ClearCollect pour charger des données dans la collection pour les définir. C'est un cas courant lors de l'utilisation LoadData après une précédente SaveData. Il suffit de la présence de ces fonctions dans une formule pour définir implicitement la structure de la collection. Pour plus d'informations, voir création et suppression de variables.

Les données chargées seront ajoutées à la collection. Utilisez la fonction Clear avant d'appeler LoadData si vous voulez commencer avec une collection vide.

Les fonctions intégrées de bac à sable de l'appareil sont utilisées pour isoler les données enregistrées des autres applications.

L'appareil peut également crypter les données ; ou vous pouvez utiliser un outil de gestion des appareils mobiles tel que Microsoft Intune.

Syntaxe

SaveData( Collection, Name )
LoadData( Collection, Name [, IgnoreNonexistentFile ])

  • Collection - Obligatoire. Collection à stocker ou à charger.
  • Name - Obligatoire. Nom du stockage. Le même nom doit être le même pour enregistrer et charger le même jeu de données. L'espace de noms n'est partagé avec d'autres applications ou utilisateurs. Les noms ne doivent contenir aucun de ces caractères : *".?:\<>|/.
  • IgnoreNonexistentFile - Facultatif. Une valeur booléenne indiquant quoi faire si le fichier n'existe pas déjà. Utilisez false (par défaut) pour renvoyer une erreur et true pour supprimer l'erreur.

Exemples

Formule Description Résultat
SaveData( LocalCache, "MyCache" ) Enregistrez la collection LocalCache sur l'appareil de l'utilisateur sous le nom "MyCache", adapté à LoadData pour récupérer plus tard. Les données sont enregistrées sur l'appareil local.
LoadData( LocalCache, "MyCache" ) Charge la collection LocalCache depuis l'appareil de l'utilisateur sous le nom "MyCache", préalablement stockée avec un appel à SaveData. Les données sont chargées à partir de l'appareil local.

Exemple simple hors ligne

Un exemple simple suivant capture et stocke les noms et les images des objets du quotidien hors ligne. Il stocke les informations dans le stockage local de l'appareil pour une utilisation ultérieure. Cela permet de fermer l'application ou de redémarrer l'appareil sans perdre de données.

Vous devez avoir un appareil pour utiliser cet exemple car il utilise les fonctions LoadData et SaveData qui ne fonctionnent pas dans un navigateur Web.

  1. Créez une application canevas vierge avec une disposition de tablette. Pour plus de détails, lisez Création d'une application à partir d'un modèle et sélectionnez Disposition de la tablette en dessous de Application vierge.

  2. Ajouter un contrôle Text input et un contrôle Camera et les organiser à peu près comme indiqué :

    Un contrôle de saisie de texte et un contrôle de caméra ajoutés à un écran vide

  3. Ajouter un contrôle Button.

  4. Double-cliquez sur le contrôle button pour changer le texte du bouton en Ajouter un article (ou modifiez la propriété Text).

  5. Définissez la propriété OnSelect du contrôle button à cette formule qui ajoutera un élément à notre collection :

    Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
    

    Contrôle button ajouté avec le texte "Ajouter un élément" et le jeu de propriétés OnSelect

  6. Ajouter un autre contrôle Button.

  7. Double-cliquez sur le contrôle button pour changer le texte du bouton en Enregistrer les données (ou modifiez la propriété Text).

  8. Définissez la propriété OnSelect du contrôle button à cette formule pour enregistrer notre collection sur l'appareil local :

    SaveData( MyItems, "LocalSavedItems" )
    

    Contrôle button ajouté avec le texte "Enregistrer les données" et le jeu de propriétés OnSelect

    Il est tentant de tester le bouton car il n'affecte rien. Mais vous ne verrez qu'une erreur lors de la création dans un navigateur Web. Enregistrez d'abord l'application et ouvrez-la sur un appareil avant de suivre les étapes suivantes pour tester cette formule :

  9. Ajouter un troisième contrôle Button.

  10. Double-cliquez sur le contrôle button pour changer le texte du bouton en Charger les données (ou modifiez la propriété Text).

  11. Définissez la propriété OnSelect du contrôle button à cette formule pour charger notre collection à partir de l'appareil local :

    LoadData( MyItems, "LocalSavedItems" )
    

    Contrôle button ajouté avec le texte "Charger les données" et le jeu de propriétés OnSelect

  12. Ajouter un contrôle Gallery avec une disposition verticale qui comprend une image et des zones de texte :

    Sélection de variétés de galerie, "Vertical" sélectionné avec zones d'image et de texte

  13. Lorsque vous y êtes invité, sélectionnez la collection MyItems comme source de données pour cette galerie. Cela définit la propriété Items du contrôle Gallery :

    Sélection de galerie de source de données Le contrôle d'image dans le modèle de galerie doit avoir par défaut sa propriété Image définie sur ThisItem.Picture et les contrôles d'étiquette doivent tous deux avoir par défaut leurs propriétés Text sur ThisItem.Item. Vérifiez ces formules si, après avoir ajouté des éléments dans les étapes suivantes, vous ne voyez rien dans la galerie.

  14. Positionnez le contrôle à droite des autres contrôles :

    Galerie repositionnée à droite de l'écran

  15. Enregistrez votre application. Si c'est la première fois qu'il est enregistré, il n'est pas nécessaire de le publier. Si ce n'est pas la première fois, publiez l'application après avoir enregistré.

  16. Ouvrez l'application sur un appareil, que ce soit un téléphone ou une tablette. SaveData et LoadData ne peut pas être utilisé dans Studio ou dans un navigateur Web. Actualisez votre liste d'applications si vous ne voyez pas votre application immédiatement, cela peut prendre quelques secondes pour que l'application apparaisse sur votre appareil. La déconnexion et la reconnexion à votre compte peuvent également vous aider.

    Application en cours d'exécution sans aucun élément ajouté Une fois votre application téléchargée, vous pouvez vous déconnecter du réseau et exécuter l'application hors ligne.

  17. Saisissez le nom et prenez une photo d'un élément.

  18. Cliquez sur le bouton Ajouter un article. Répétez l'ajout d'éléments plusieurs fois pour charger votre collection.

    Application en cours d'exécution avec trois éléments ajoutés

  19. Cliquez sur le bouton Enregistrer les données. Cela enregistrera les données de votre collection sur votre appareil local.

  20. Fermer l'application. Votre collection en mémoire sera perdue, y compris tous les noms d'articles et les images, mais ils seront toujours là dans le stockage de l'appareil.

  21. Lancer l'application à nouveau. La collection en mémoire sera de nouveau affichée comme vide dans la galerie.

    Application en cours de réexécution sans éléments ajoutés

  22. Cliquez sur le bouton Charger les données. La collection sera renseignée à nouveau à partir des données stockées sur votre appareil et vos articles seront de retour dans la galerie. La collection était vide avant que ce bouton n'appelle la fonction LoadData ; il n'était pas nécessaire d'appeler Collect ou ClearCollect avant de charger les données du stockage.

    Application exécutée avec trois éléments restaurés après l'appel de la fonction LoadData

  23. Cliquez à nouveau sur le bouton Charger les données. Les données stockées seront ajoutées à la fin de la collection et une barre de défilement apparaîtra sur la galerie. Si vous souhaitez remplacer plutôt que d'ajouter, utilisez la fonction Clear d'abord pour effacer la collection avant d'appeler la fonction LoadData.

    Application exécutée avec six éléments restaurés après deux appels de la fonction LoadData

Exemple hors ligne plus avancé

Pour un exemple détaillé, voir l'article sur capacités hors ligne simples.