Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Canvas-apps
Copilot Studio
Desktop stromen
Modelgestuurde apps
Power Platform CLI
Dataverse-functies
Power Pages
Berekent waarden en voert acties uit voor één record, waaronder inlinerecords met benoemde waarden.
Beschrijving
Met de functie With wordt een formule voor één record geëvalueerd. De formule kan een waarde berekenen en/of acties uitvoeren, zoals het wijzigen van gegevens of het werken met een verbinding. Gebruik de functie ForAll om een formule te evalueren voor alle records in een tabel met records.
Velden van de momenteel verwerkte record zijn beschikbaar in de formule. Gebruik de operator ThisRecord of verwijs gewoon met de naam naar velden, zoals u dat ook bij andere waarden zou doen. De operator As kan ook worden gebruikt om een naam te geven aan de record die wordt verwerkt, wat kan helpen uw formule begrijpelijker te maken en geneste records toegankelijk te maken. Meer informatie vindt u in de voorbeelden hieronder en in werken met recordbereik.
Gebruik With dit om de leesbaarheid van complexe formules te verbeteren door deze te verdelen in kleinere subformules. Deze benoemde waarden fungeren als eenvoudige lokale variabelen die beperkt zijn tot het bereik van de With. Dezelfde inlinerecordsyntaxis die wordt gebruikt met de functie UpdateContext, kunnen worden gebruikt met With. Het gebruik With heeft de voorkeur boven context- of globale variabelen, omdat deze zich op zichzelf bevindt, gemakkelijk te begrijpen is en kan worden gebruikt in elke declaratieve formulecontext.
Gebruik With deze functie om toegang te krijgen tot de velden van de record die worden geretourneerd door functies zoals Patch of Match. With bevat de waarde van deze functies lang genoeg om te worden gebruikt in verdere berekeningen of acties.
Als het argument WithRecord een fout is, wordt deze fout geretourneerd door de functie en wordt de formule niet geëvalueerd.
Syntaxis
With( Record, Formule )
-
Record – Verplicht. De record waarop de bewerking moet worden uitgevoerd. Gebruik voor naamwaarden de inline-syntaxis
{ name1: value1, name2: value2, ... } - Formule – Verplicht. De formule die moet worden geëvalueerd voor Record. De formule kan rechtstreeks verwijzen naar elk van de velden van Record als recordbereik.
Voorbeelden
Eenvoudige benoemde waarden
With( { radius: 10,
height: 15 },
Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)
In dit voorbeeld wordt een record met benoemde waarden gebruikt om het volume van een cilinder te berekenen. With wordt gebruikt om alle invoerwaarden samen vast te leggen, zodat u ze eenvoudig kunt scheiden van de berekening zelf.
Geneste 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
)
)
In dit voorbeeld worden functies genest With om een berekening met twee lagen te maken voor maandelijkse hypotheekbetalingen. Zolang er geen conflict is, zijn alle buitenste benoemde With waarden beschikbaar binnen de binnenste With.
Aangezien de schuifregelaars alleen kunnen bewegen in stappen van 1, worden de schuifregelaars gedeeld of vermenigvuldigd om effectief een aangepaste verhoging te creëren. In het geval van het rentetarief is voor de RateSlider de eigenschap Max ingesteld op 48, gedeeld door 8 voor een stijging met 1/8 procentpunt, en gedeeld door 100 om van een percentage naar een decimaal getal te converteren, met een bereik van 0,125% tot 6%. Voor wat betreft het geleende bedrag is voor de AmountSlider de eigenschap Max ingesteld op 60 en vermenigvuldigd met 10.000, wat een bereik van 10.000 tot 600.000 oplevert.
De With wordt automatisch opnieuw berekend wanneer de schuifregelaars worden verplaatst en de nieuwe leningbetaling wordt weergegeven. Er worden geen variabelen gebruikt en het is niet nodig om de eigenschap OnChange van de schuifregelaars te gebruiken.
Hier volgen gedetailleerde instructies voor het maken van deze app:
- Maak een nieuwe app.
- Voeg een besturingselement Slider toe en geef het element de naam RateSlider. Stel de eigenschap Max ervan in op 48.
- Voeg links van de schuifregelaar een besturingselement Label toe. Stel de eigenschap Text ervan in op "Rentetarief:".
- Voeg rechts van de schuifregelaar een besturingselement Label toe. Stel de eigenschap Text ervan in op de formule RateSlider/8 & " %".
- Voeg nog een besturingselement Slider toe en geef het element de naam BedragSlider. Stel de eigenschap Max ervan in op 60.
- Voeg links van deze schuifregelaar een besturingselement Label toe. Stel de eigenschap Text ervan in op "Leenbedrag:".
- Voeg rechts van deze schuifregelaar een besturingselement Label toe. Stel de eigenschap Text ervan in op de formule BedragSlider/8 * 10000.
- Voeg nog een besturingselement Slider toe en geef het element de naam JarenSlider. Stel de eigenschap Max ervan in op 40.
- Voeg links van deze schuifregelaar een besturingselement Label toe. Stel de eigenschap Text ervan in op "Aantal jaren:".
- Voeg rechts van deze schuifregelaar een besturingselement Label toe. Stel de eigenschap Text ervan in op de formule JarenSlider.
- Voeg een besturingselement van het type Label toe en stel de eigenschap Text in op de hierboven getoonde formule.
- Voeg links van het laatste besturingselement Label een besturingselement Label toe. Stel de eigenschap Text ervan in op "Maandelijks bedrag:".
Primaire sleutel geretourneerd door 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
)
)
)
In dit voorbeeld wordt een record toegevoegd aan de tabel Order in SQL Server. Vervolgens wordt de geretourneerde primaire sleutel voor de order, die wordt geretourneerd door de functie Patch in het veld OrderID, gebruikt om gerelateerde records te maken in de tabel OrderDetails.
Geëxtraheerde waarden met een reguliere expressie
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)
In dit voorbeeld worden de uren, minuten en seconden uit een ISO 8601-tijdsduurwaarde opgehaald, waarna met deze sub-overeenkomsten een datum/tijd-waarde wordt gemaakt.
Merk op dat alhoewel de sub-overeenkomsten getallen bevatten, ze nog steeds in een tekenreeks van het type tekst staan. Zet dit door middel van de functie Value om naar een getal voordat u rekenkundige bewerkingen laat uitvoeren.
Een record toewijzen aan een onderdeel
Zie Record toewijzen.