Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Les applications
Canvas Copilot Studio
Desktop circulent des
applications basées sur des modèles
power Platform CLI
Dataverse functions
Power Pages
Calcule des valeurs et effectue des actions pour un seul enregistrement, y compris des enregistrements en ligne de valeurs nommées.
Description
La fonction With évalue une formule pour un seul enregistrement. La formule peut calculer une valeur et/ou effectuer différentes actions, par exemple modifier des données ou utiliser une connexion. Utilisez la fonction ForAll pour évaluer une formule pour tous les enregistrements d’une table d’enregistrements.
Les champs de l’enregistrement en cours de traitement sont disponibles dans la formule. Utilisez l’opérateur ThisRecord ou référencez simplement les champs par leur nom comme vous le feriez pour toute autre valeur. L’opérateur As peut également être utilisé pour nommer l’enregistrement en cours de traitement, ce qui peut faciliter la compréhension de votre formule et rendre les enregistrements imbriqués accessibles. Pour plus d’informations, consultez les exemples ci-dessous et la section Utilisation de l’étendue de l’enregistrement.
Permet With d’améliorer la lisibilité des formules complexes en la divisant en sous-formules nommées plus petites. Ces valeurs nommées agissent comme des variables locales simples limitées à l’étendue du With. La même syntaxe d’enregistrement inline utilisée avec la fonction UpdateContext peut être utilisée avec With. L’utilisation With est recommandée par rapport au contexte ou aux variables globales, car elle est autonome, facile à comprendre et peut être utilisée dans n’importe quel contexte de formule déclarative.
Permet With d’accéder aux champs de l’enregistrement retournés par des fonctions telles que Patch ou Match. With contient la valeur de ces fonctions suffisamment longtemps pour être utilisée dans d’autres calculs ou actions.
Si l’argument Enregistrement auquel With il s’agit d’une erreur, cette erreur est retournée par la fonction et la formule n’est pas évaluée.
Syntaxe
With( Enregistrement, formule )
-
Enregistrement – Obligatoire. L’enregistrement doit être traité. Pour les valeurs de noms, utilisez la syntaxe en ligne
{ name1: value1, name2: value2, ... } - Formule – Obligatoire. La formule à évaluer pour Record. La formule peut référencer n’importe lequel des champs de Record directement comme une étendue d’enregistrement.
Exemples
Valeurs nommées simples
With( { radius: 10,
height: 15 },
Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)
Cet exemple utilise un enregistrement de valeurs nommées pour calculer le volume d’un cylindre. With est utilisé pour capturer toutes les valeurs d’entrée ensemble, ce qui permet de les séparer facilement du calcul lui-même.
Imbriqué With
With( { AnnualRate: RateSlider/8/100, // slider moves in 1/8th increments and convert to decimal
Amount: AmountSlider*10000, // slider moves by 10,000 increment
Years: YearsSlider, // slider moves in single year increments, no adjustment required
AnnualPayments: 12 }, // number of payments per year
With( { r: AnnualRate/AnnualPayments, // interest rate
P: Amount, // loan amount
n: Years*AnnualPayments }, // number of payments
r*P / (1 - (1+r)^-n) // standard interest calculation
)
)
Cet exemple imbrication des With fonctions pour créer un calcul à deux niveaux pour les paiements hypothécaires mensuels. Tant qu’il n’y a pas de conflit, toutes les valeurs nommées externes With sont disponibles dans l’intérieur With.
Étant donné que les contrôles Slider ne peuvent se déplacer que par incréments de 1, les curseurs sont divisés ou multipliés pour créer efficacement un incrément personnalisé. Dans le cas du taux d’intérêt, le contrôle RateSlider a sa propriété Max définie sur 48, divisé par 8 pour un incrément de 1/8 point de pourcentage et divisé par 100 pour convertir un pourcentage en décimal, couvrant la plage de 0,125 % à 6 %. Dans le cas du montant du prêt, le contrôle AmountSlider a sa propriété Max définie sur 60 et multipliée par 10 000, couvrant la plage de 10 000 à 600 000.
Le With calcul est automatiquement recalculé à mesure que les curseurs se déplacent et que le nouveau paiement de prêt s’affiche. Aucune variable n’est utilisée et il n’est pas nécessaire d’utiliser la propriété OnChange des contrôles Slider.
Voici les instructions détaillées pour créer cette application :
- Créez une application.
- Ajoutez un contrôle Slider et nommez-le RateSlider. Définissez sa propriété Max sur 48.
- Ajoutez un contrôle Label à gauche du contrôle Slider. Définissez sa propriété Text sur "Interest Rate:".
- Ajoutez un contrôle Label à droite du contrôle Slider. Définissez sa propriété Text sur la formule RateSlider/8 & " %".
- Ajoutez un autre contrôle Slider et nommez-le AmountSlider. Définissez sa propriété Max sur 60.
- Ajoutez un contrôle Label à gauche de ce contrôle Slider. Définissez sa propriété Text sur "Loan Amount:".
- Ajoutez un contrôle Label à droite de ce contrôle Slider. Définissez sa propriété Text sur la formule AmountSlider/8 * 10000.
- Ajoutez un autre contrôle Slider et nommez-le YearsSlider. Définissez sa propriété Max sur 40.
- Ajoutez un contrôle Label à gauche de ce contrôle Slider. Définissez sa propriété Text sur "Number of Years:".
- Ajoutez un contrôle Label à droite de ce contrôle Slider. Définissez sa propriété Text sur la formule YearsSlider.
- Ajoutez un contrôle Label et définissez sa propriété Text sur la formule affichée ci-dessus.
- Ajoutez un contrôle Label à gauche du dernier contrôle Label. Définissez sa propriété Text sur "Recurring Monthly Payment:".
Clé primaire renvoyée par Patch
With( Patch( Orders, Defaults( Orders ), { OrderStatus: "New" } ),
ForAll( NewOrderDetails,
Patch( OrderDetails, Defaults( OrderDetails ),
{ Order: OrderID, // from With's first argument, primary key of Patch result
Quantity: Quantity, // from ForAll's NewOrderDetails table
ProductID: ProductID } // from ForAll's NewOrderDetails table
)
)
)
Cet exemple ajoute un enregistrement à la table Order dans SQL Server. Il utilise ensuite la clé primaire renvoyée pour la commande, renvoyée par la fonction Patch dans le champ OrderID pour créer des enregistrements associés dans la table OrderDetails.
Valeurs extraites avec une expression régulière
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)
Cet exemple extrait les heures, les minutes et les secondes d’une valeur de durée ISO 8601, puis utilise ces sous-correspondances pour créer une valeur de date/heure.
Notez que bien que les sous-correspondances contiennent des nombres, elles sont toujours dans une chaîne de texte. Utilisez la fonction Value pour convertir en nombre avant d’effectuer des opérations mathématiques.
Mapper un enregistrement dans un composant
Reportez-vous à la rubrique Mapper un enregistrement.