Partajați prin


Cu functie

Se aplică pentru: planșă de lucru aplicații Fluxuri desktop Aplicații bazate pe model Power Pages Power Platform CLI

Calculează valorile și execută acțiuni pentru o singură înregistrare, inclusiv înregistrări în linie ale valorilor numite.

Descriere

Funcția With evaluează o formulă pentru o singură înregistrare. Formula poate să calculeze o valoare și/sau să efectueze acțiuni, cum ar fi modificarea datelor sau lucrul cu o conexiune. Utilizați funcția ForAll pentru a evalua o formulă pentru toate înregistrările dintr-un tabel de înregistrări.

Câmpurile înregistrării procesate în prezent sunt disponibile în cadrul formulei. Utilizați operatorul ThisRecord sau pur și simplu faceți referire la câmpuri după nume, așa cum ați face cu orice altă valoare. Operatorul Ca poate fi, de asemenea, utilizat pentru a denumi înregistrarea care este procesată, ceea ce poate face formula dvs. să fie mai ușor de înțeles și înregistrările imbricate să fie accesibile. Pentru informații suplimentare, consultați exemplele de mai jos și lucrul cu domeniul de aplicare al înregistrărilor.

Utilizați With pentru a îmbunătăți lizibilitatea formulelor complexe împărțind-le în subformule denumite mai mici. Aceste valori numite acționează ca simple variabile locale limitate la domeniul de aplicare al With. Aceeași sintaxă de înregistrare în linie care este folosită cu funcția UpdateContext poate fi folosită cu With. Se preferă utilizarea With față de variabilele contextuale sau globale, deoarece este autonomă, ușor de înțeles și poate fi utilizată în orice context de formulă declarativă.

Utilizați Cu pentru a accesa câmpurile înregistrării care sunt returnate de funcții precum Patch sau Se potrivește. With reține valoarea de la aceste funcții suficient de mult pentru a fi utilizată în calcule sau acțiuni suplimentare.

Dacă argumentul Înregistrare al With este o eroare, respectiva eroare va fi returnată de funcție, iar Formula nu va fi evaluată.

Sintaxă

With( Înregistrare, Formulă )

  • Înregistrare – Obligatoriu. Înregistrarea asupra căreia trebuie acționat. Pentru valorile numelor, utilizați sintaxa în linie { name1: value1, name2: value2, ... }
  • Formula – Obligatoriu. Formula pentru a evalua Înregistrarea. Formula poate face referire în mod direct la oricare dintre câmpurile de Înregistrare direct ca domeniu de aplicare al înregistrării.

Exemple

Valori simple numite

With( { radius: 10,
        height: 15 },
    Pi() * (radius*radius) * height
)
// Result: 4712.38898038 (as shown in a label control)

Acest exemplu utilizează o înregistrare a valorilor numite pentru a calcula volumul unui cilindru. With este utilizat pentru a captura toate valorile de intrare împreună, facilitând separarea lor de calculul în sine.

With imbricat

Calculator de dobândă care utilizează funcția 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
      )
)

Acest exemplu imbrică funcțiile With pentru a crea un calcul pe două niveluri pentru plăți ipotecare lunare. Atât timp cât nu există niciun conflict, toate valorile exterioare numite With sunt disponibile în With interior.

Întrucât controalele de glisor se pot muta numai în incremente de 1, glisoarele sunt împărțite sau înmulțite pentru a crea în mod eficient un increment particularizat. În cazul ratei dobânzii, RateSlider are proprietatea Max setată la 48, împărțit la 8 pentru un increment de punct procentual de 1/8 și împărțit la 100 pentru convertire de la un procent la o zecimală, acoperind intervalul 0,125% până la 6%. În cazul sumei împrumutului, AmountSlider are proprietatea Max setată la 60 și înmulțită cu 10.000, acoperind intervalul 10.000 până la 600.000.

With este recalculată automat pe măsură ce glisoarele se mută și se afișează noua plată a împrumutului. Nu se utilizează variabile și nu este necesară utilizarea proprietății OnChange a controalelor glisorului.

Iată instrucțiunile detaliate pentru crearea acestei aplicații:

  1. Creați o aplicație nouă.
  2. Adăugați un control Glisor și numiți-l RateSlider. Setați proprietatea Max la 48.
  3. Adăugați un control Label în partea stângă a controlului glisorului. Setați proprietatea Text la "Rata dobânzii:".
  4. Adăugați un control Label în partea dreaptă a controlului glisorului. Setați-i proprietatea Text la formula RateSlider/8 & " %".
  5. Adăugați un alt control Glisor și numiți-l AmountSlider. Setați proprietatea Max la 60.
  6. Adăugați un control Label în partea stângă a acestui control de glisor. Setați proprietatea Text la "Suma împrumutului:".
  7. Adăugați un control Label în partea dreaptă a acestui control de glisor. Setați proprietatea Text conform formulei AmountSlider/8 * 10000.
  8. Adăugați un alt control Glisor și numiți-l YearsSlider. Setați proprietatea Max la 40.
  9. Adăugați un control Label în partea stângă a acestui control de glisor. Setați proprietatea Text la "Număr de ani:".
  10. Adăugați un control Label în partea dreaptă a acestui control de glisor. Setați proprietatea Text conform formulei YearsSlider.
  11. Adăugați un control Label și setați proprietatea Text conform formulei afișate mai sus.
  12. Adăugați un control Label în partea stângă a ultimului control de etichetă. Setați proprietatea Text la "Plată lunară recurentă:".

Cheia primară returnată de la 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
              )
      )
)

Acest exemplu adaugă o înregistrare la tabelul Order în SQL Server. Apoi utilizează cheia primară returnată pentru comandă, returnată de funcția Patch în câmpul OrderID, pentru a crea înregistrări conexe în tabelul OrderDetails.

Valori extrase cu o expresie regulată

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)

Acest exemplu extrage orele, minutele și secundele dintr-o valoare de durată ISO 8601 și apoi folosește aceste sub-potriviri pentru a crea o valoare dată/oră.

Rețineți că, deși sub-potrivirile conțin numere, ele sunt încă într-un șir de text. Utilizați funcția Value pentru a converti la un număr înainte de a efectua operații matematice.

Mapați o înregistrare într-o componentă

Vedeți Mapare înregistrare.