Exercice : écrire dans la table Notes de frais
Maintenant que vos données sont configurées, vous devez écrire dans deux tables de cet écran. Vous allez découvrir les concepts d’écriture dans une source de données en écrivant d’abord la table parent, à savoir la table Note de frais. Par ailleurs, cet écran n’impose pas seulement d’écrire de nouveaux enregistrements, il nécessite également de modifier des brouillons existants et d’afficher les informations des notes de frais déjà soumises. Vous devez par conséquent indiquer aux champs quel enregistrement est en cours de modification ou d’affichage. Vous devez également leur spécifier s’il faut créer un enregistrement. Pour effectuer ces tâches, vous avez besoin de quelques variables.
Utiliser des variables pour contrôler le flux de données
Pour utiliser des variables afin de contrôler le flux de données, procédez comme suit :
Dans l’Arborescence, sélectionnez Scr_Welcome.
Sélectionnez le bouton Btn_NewExpense_Welcome et ajoutez au code de la propriété OnSelect. Pour vous assurer que les fonctions s’exécutent simultanément, vous devez les séparer par un point-virgule. De ce fait, après la fonction Navigate(), ajoutez
;Set(VarExpenseMode, "New")
. N’oubliez pas que vous pouvez mettre en forme le texte afin qu’il soit plus clair.La propriété OnSelect devrait maintenant ressembler à l’image suivante :
Outre le fait de naviguer dans les écrans comme auparavant, vous allez également créer une variable pour indiquer qu’un nouvel enregistrement doit être créé.
Vous effectuerez le même processus pour Scr_AllExpenses.
Dans l’écran Scr_AllExpenses, sélectionnez la flèche suivante dans Gal_ExpenseReports_AllExpenses.
Mettez à jour la propriété OnSelect avec le code suivant : Set(VarExpenseMode, "Edit"); Set(VarExpense, ThisItem); Navigate(Scr_EditExpense)
La propriété OnSelect ressemble maintenant à la capture d’écran suivante.
Cette fois, vous allez définir une variable indiquant de modifier un enregistrement existant. Vous allez également définir une variable pour indiquer quel enregistrement doit être modifié. Ensuite, vous passerez à l’écran suivant.
Revenez à l’écran Scr_EditExpense pour observer ces variables en action.
Définissez la propriété OnVisible de Scr_EditExpense sur
If(VarExpenseMode="New", Set(VarExpense, Blank()))
. Ce paramètre garantit que les champs ne contiennent pas de données d’un enregistrement précédent. Vous pouvez également utiliser le bouton sur votre écran de bienvenue, mais le but de l’apprentissage est de découvrir différentes méthodes. Vous remarquerez peut-être que l’instruction If n’a qu’une valeur True. Si seule une valeur True est définie et que la condition est False, rien ne se passera.Avec les variables en place, vous pouvez référencer les données existantes, puis les effacer.
Pour Txt_Destination_EditExpense, définissez la propriété Default sur
VarExpense.'Trip Destination'
, comme illustré dans l’image suivante.Prenez un moment pour tester cette variable.
Dans l’écran Scr_AllExpenses, sélectionnez la flèche suivante pour un enregistrement en maintenant la touche Alt enfoncée ou en activant le mode Lecture de l’application. Une destination doit s’afficher si vous naviguez depuis l’écran Scr_AllExpenses. Un champ vide s’affiche si vous naviguez depuis l’écran Scr_Welcome.
Revenez à l’écran Scr_EditExpense et changez la propriété DefaultDate pour Dte_Departure_EditExpense sur VarExpense.’Departure Date’.
Changez la propriété DefaultDate pour Dte_Arrival_EditExpense sur VarExpense.’Arrival Date’.
N’oubliez pas que si vous rencontrez des difficultés pour trouver une propriété pour un contrôle, vous pouvez toujours rechercher toutes les propriétés dans la barre d’outils, dans le menu déroulant Propriétés ou dans le volet Propriétés.
Une fois ces propriétés définies, les dates devraient se comporter exactement comme le champ de destination. Activez le mode Lecture de l’application afin de tester à ce stade la fonctionnalité.
Maintenant que votre application fonctionne bien, il est temps de commencer à configurer la logique de l’application pour réécrire les données de l’application dans vos tables.
Configurer la logique de l’application
Dans ce scénario, comme dans de nombreux scénarios réels, les utilisateurs auront besoin de la fonctionnalité pour ajouter de nouveaux éléments et modifier les éléments existants. De plus, vous souhaiterez inclure la fonctionnalité permettant aux utilisateurs d’enregistrer en tant que brouillon. Cette fonctionnalité leur permet de travailler sur un élément pendant plusieurs jours ou sessions avant de le soumettre pour approbation.
Sur l’écran Scr_EditExpense, sélectionnez Btn_SaveAsDraft_EditExpense et changez la propriété OnSelect comme suit :
Set( VarExpense, Patch( 'Expense Reports', If( VarExpenseMode = "New", Defaults('Expense Reports'), VarExpense ), { 'Trip Destination': Txt_Destination_EditExpense.Text, 'Departure Date': Dte_Departure_EditExpense.SelectedDate, 'Arrival Date': Dte_Arrival_EditExpense.SelectedDate, 'Report Status': ['Report Status'.Draft], Traveler: LookUp( Users, 'Primary Email' = VarUser.Email ) } ) )
Ce code est la partie la plus complexe que vous ayez réalisée jusqu’à présent dans ce parcours d’apprentissage. Pour vous aider à mieux comprendre ce que fait ce code, la section suivante fournit une explication de ce qui se passe.
Votre première tâche consiste à utiliser la fonction Set(). Cette fonction définit VarExpense pour inclure toutes les modifications que vous apportez, y compris le nouvel identificateur unique si un élément est créé.
La fonction Patch() vous permet d’écrire dans une source de données en définissant :
- La source : « Notes de frais »
- Le dossier à modifier -
If(VarExpenseMode="New",Defaults('Expense Reports'),VarExpense)
- Ce qu’il faut écrire -
{'Trip Destination':Txt_Destination_EditExpense.Text,'Departure Date':Dte_Departure_EditExpense.SelectedDate,'Arrival Date':Dte_Arrival_EditExpense.SelectedDate,'Report Status':['Report Status'.Draft],Traveler:LookUp(Users,'Primary Email'=VarUser.Email)}
L’enregistrement à écrire est encapsulé dans une instruction If() qui examine la variable VarExpenseMode. Si l’élément est Nouveau, vous devez utiliser Defaults('Expense Reports')
. Cependant, si l’enregistrement existe déjà dans votre table, vous pouvez utiliser VarExpenses pour mettre à jour l’élément existant, étant donné qu’il contient toutes les informations dont Microsoft Dataverse a besoin pour comprendre quel enregistrement est modifié ou mis à jour.
Les informations sur les éléments peuvent être compliquées, et c’est là une raison importante de changer les noms de vos contrôles afin qu’ils suivent une logique. Les champs de texte et de date, tels que Destination du voyage et Date de départ, sont assez simples à écrire. Vous devez référencer le contrôle dans lequel les informations sont saisies, puis explorer ce contrôle pour trouver les informations exactes, telles que ’Text’ pour une saisie de texte ou ’SelectedDate’ pour un sélecteur de date. Les deux derniers champs sont plus compliqués.
Statut de la note de frais est un champ de choix, tandis que Voyageur est une recherche dans la table Utilisateur. Les champs de choix dans Dataverse nécessitent une table de données, ce qui signifie simplement que vous devez ajouter des crochets [] autour de la table. À l’intérieur des crochets, vous devez écrire de nouveau le nom du champ pour récupérer les choix possibles et examiner la période pour que Power Apps vous fournisse la liste des choix disponibles.
Pour le champ Voyageur, vous allez rechercher l’utilisateur connecté dans la table Utilisateurs à l’aide d’une fonction LookUp(). La fonction LookUp() utilise la source de données Utilisateurs pour rechercher le premier enregistrement de cette table qui correspond à la condition 'Primary Email' = VarUser.Email
. C’est pourquoi il est important d’utiliser un champ qui sera unique, comme le champ E-mail.
À mesure que vous progressez dans ce module, prenez votre temps. Si nécessaire, essayez de décomposer le code en fragments plus petits. Cette approche facilitera votre apprentissage et vous aidera à devenir au final un meilleur développeur d’applications Power Apps.
Félicitations ! La fonctionnalité Enregistrer en tant que brouillon est terminée.
Besoin d'aide ? Consultez notre guide de résolution des défis ou fournissez des commentaires spécifiques en signalant un défi.