Comparteix a través de


Amb funció

S'aplica a: Aplicacions de llenç Fluxos d'escriptori Aplicacions Power Platform basades en models CLI

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 funció With avalua una fórmula per a un únic 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.

Utilitzeu With per millorar la capacitat de lectura de fórmules complexes mitjançant la divisió en subfórmules més petites anomenades. Aquests valors anomenats actuen com a simples variables locals confinades a l'àmbit de la funció With. La mateixa sintaxi de registre en línia que s'utilitza amb la funció UpdateContext es pot utilitzar amb la funció With. L'ús de la funció With es prefereix sobre les variables globals o de context, ja que és independent, fàcil d'entendre i es pot utilitzar en un context de fórmula declaratiu.

Utilitzeu Amb per accedir als camps del registre que retornen funcions com ara Pedaç o Coincidència. With conté el valor d'aquestes funcions el temps suficient per utilitzar-les en accions o càlculs més llargs.

Si l'argument Registre definit com a With és un error, no s'avaluarà aquest error retornat per la funció i la Fórmula.

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: obligatori. 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, cosa que facilita separar-los del mateix càlcul.

Incrustat amb

Calculadora d'interès utilitzant la funció 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'incrusten les funcions With per crear un càlcul de dos nivells per a pagaments mensuals d'hipoteca. Sempre que no hi hagi cap conflicte, tots els valors anomenats With exteriors estan disponibles dins de la funció With interior.

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.

La funció With es torna a calcular automàticament quan 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ó:

  1. Creeu una nova aplicació.
  2. Afegiu un Control lliscant i anomeneu-lo RateSlider. Definiu-ne la propietat Max com a 48.
  3. Afegiu un control Etiqueta a l'esquerra del control lliscant. Definiu-ne la propietat Text com a "Tipus d'interès:".
  4. Afegiu un control Etiqueta a la dreta del control lliscant. Definiu la propietat Text a la fórmula RateSlider/8 & " %".
  5. Afegiu un altre Control lliscant i anomeneu-lo AmountSlider. Definiu-ne la propietat Max com a 60.
  6. Afegiu un control Etiqueta a l'esquerra d'aquest control lliscant. Definiu-ne la propietat Text com a "Import del préstec:".
  7. Afegiu un control Etiqueta a la dreta d'aquest control lliscant. Definiu-ne la propietat Text a la fórmula AmountSlider/8 * 10000.
  8. Afegiu un altre Control lliscant i anomeneu-lo YearsSlider. Definiu-ne la propietat Max com a 40.
  9. Afegiu un control Etiqueta a l'esquerra d'aquest control lliscant. Definiu-ne la propietat Text a "Nombre d'anys:".
  10. Afegiu un control Etiqueta a la dreta d'aquest control lliscant. Definiu-ne la propietat Text a la fórmula YearsSlider.
  11. Afegiu un control Etiqueta i definiu-ne la propietat Text a la fórmula que es mostra a la part superior.
  12. 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.