Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
S'aplica a: Aplicacions
de llenç Copilot Studio
Fluxos
d'escriptori Aplicacions
basades en models CLI
del Power Platform Funcions
del Dataverse Power Pages
Calcula els valors i duu a terme accions per a un registre únic, que inclou els registres en línia dels valors anomenats.
Descripció
La With funció avalua una fórmula per a un sol registre. La fórmula pot calcular un valor i/o dur a terme accions, com ara modificar dades o treballar amb una connexió. Utilitzeu la funció ForAll per avaluar una fórmula per a tots els registres d'una taula de registres.
Els camps del registre que s’està processant actualment estan disponibles dins de la fórmula. Utilitzeu l’operador ThisRecord o simplement els camps de referència per nom com si fos qualsevol altre valor. L’operador As també es pot utilitzar per nomenar el registre que s’està processant i que pot ajudar-vos a fer que la fórmula sigui més fàcil d’entendre i fer accessible els registres incrustats. Per obtenir més informació, vegeu els exemples següents i la secció Treballar amb l’àmbit de registre.
S'utilitza With per millorar la llegibilitat de fórmules complexes dividint-les en subfórmules amb nom més petites. Aquests valors amb nom actuen com a variables locals simples confinades a l'abast del With. La mateixa sintaxi de registre en línia que s'utilitza amb la funció UpdateContext es pot utilitzar amb Withel . L'ús With és preferible sobre el context o les variables globals, ja que és autònom, fàcil d'entendre i es pot utilitzar en qualsevol context de fórmula declarativa.
S'utilitza With per accedir als camps del registre que retornen funcions com ara Patch o Match. With manté el valor d'aquestes funcions el temps suficient per utilitzar-lo en càlculs o accions posteriors.
Si l'argument Record to With és un error, la funció retornarà aquest error i la fórmula no s'avaluarà.
Sintaxi
With( Registre, Fórmula )
-
Registre : obligatori. El registre al qual es realitzaran les accions. Per als valors dels noms, utilitzeu la sintaxi en línia
{ name1: value1, name2: value2, ... } - Fórmula : obligatòria. La fórmula que s'avalua per al Registre. La fórmula pot fer referència a qualsevol dels camps del Registre directament com a àmbit d'un registre.
Exemples
Valors anomenats simples
With( { radius: 10,
height: 15 },
Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)
Aquest exemple utilitza un registre de valors anomenats per calcular el volum d'un cilindre. With s'utilitza per capturar tots els valors d'entrada junts, facilitant la seva separació del càlcul en si.
Niats 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
)
)
En aquest exemple s'imbriquen funcions With per crear un càlcul de dos nivells per als pagaments hipotecaris mensuals. Sempre que no hi hagi conflicte, tots els valors amb nom externs With estan disponibles dins de l'interior With.
Com que els controls lliscants només es poden desplaçar en increments d'1, es divideixen o es multipliquen per crear un increment personalitzat de manera eficaç. En el cas del tipus d'interès, RateSlider té la propietat Max establerta en 48, que es divideix entre 8 per a un increment de punts de percentatge d'1/8 i es divideix entre 100 per convertir d'un percentatge a un decimal, cosa que cobreix l'interval de 0,125% a 6%. En el cas de l'import del préstec, AmountSlider té la propietat Max establerta a 60 i es multiplica per 10.000, cosa que cobreix l'interval de 10.000 a 600.000.
El With es torna a calcular automàticament a mesura que es mouen els controls lliscants i es mostra el nou pagament del préstec. No s'utilitzen variables i no cal utilitzar la propietat OnChange dels controls lliscants.
A continuació, us indiquem les instruccions detallades per crear aquesta aplicació:
- Creeu una nova aplicació.
- Afegiu un Control lliscant i anomeneu-lo RateSlider. Definiu-ne la propietat Max com a 48.
- Afegiu un control Etiqueta a l'esquerra del control lliscant. Definiu-ne la propietat Text com a "Tipus d'interès:".
- Afegiu un control Etiqueta a la dreta del control lliscant. Definiu la propietat Text a la fórmula RateSlider/8 & " %".
- Afegiu un altre Control lliscant i anomeneu-lo AmountSlider. Definiu-ne la propietat Max com a 60.
- Afegiu un control Etiqueta a l'esquerra d'aquest control lliscant. Definiu-ne la propietat Text com a "Import del préstec:".
- Afegiu un control Etiqueta a la dreta d'aquest control lliscant. Definiu-ne la propietat Text a la fórmula AmountSlider/8 * 10000.
- Afegiu un altre Control lliscant i anomeneu-lo YearsSlider. Definiu-ne la propietat Max com a 40.
- Afegiu un control Etiqueta a l'esquerra d'aquest control lliscant. Definiu-ne la propietat Text a "Nombre d'anys:".
- Afegiu un control Etiqueta a la dreta d'aquest control lliscant. Definiu-ne la propietat Text a la fórmula YearsSlider.
- Afegiu un control Etiqueta i definiu-ne la propietat Text a la fórmula que es mostra a la part superior.
- Afegiu un control Etiqueta a l'esquerra del darrer control d'etiqueta. Definiu-ne la propietat Text com a "Pagament mensual periòdic:".
Clau principal que retorna del pegat
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
)
)
)
Aquest exemple afegeix un registre a la taula Comanda a l'SQL Server. A continuació, s'utilitza la clau principal retornada per a la comanda, que torna la funció Patch al camp OrderID, per crear registres relacionats a la taula OrderDetails.
Valors extrets amb una expressió regular
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)
Aquest exemple extreu les hores, els minuts i els segons d'un valor de duració ISO 8601 i, a continuació, utilitza aquestes subcoincidències per crear un valor de data i hora.
Heu de tenir en compte que, tot i que les subcoincidències contenen números, encara pertanyen a una cadena de text. Utilitzeu la funció Value per convertir-la en un número abans d'executar les operacions matemàtiques.
Assignar un registre d'un component
Vegeu Assignar el registre.