With Функцију

Односи се на: Цанвас апликације Цопилот Студио Десктоп тече Апликације засноване на моделу Повер Платформ ЦЛИ Датаверсе функције Повер Пагес

Израчунава вредности и изводи радње за један запис, укључујући уметнуте записе именованих вредности.

Опис

Функција With процењује формулу за један запис. Формула може израчунати вредност и/или извршити радње, попут мењања података или рада са везом. Користите ForAll функцију за процену формуле за све записе у табели записа.

Поља записа који се тренутно обрађује су доступна у формули. Користите оператор ThisRecord или једноставно референцирајте поља по називу као и било коју другу вредност. Оператор As такође може да се користи за именовање записа који се обрађује што може да помогне вашој формули да лакше разуме и учини угнежђене записе доступнима. Више информација потражите у примерима у наставку и чланку о раду са опсегом записа.

Користи се With за побољшање читљивости сложених формула тако што ћете га поделити на мање именоване подформуле. Ове именоване вредности се понашају као једноставне локалне варијабле ограничене на обим . With Иста синтакса инлине записа која се користи са функцијом УпдатеЦонтеxт може се користити са . With Употреба With је пожељна у односу на контекст или глобалне варијабле јер је самостална, лако разумљива и може се користити у било ком контексту декларативне формуле.

Користи With се за приступ пољима записа које враћају функције као што су Патцх или Матцх . With држи вредност из ових функција довољно дуго да се користи у даљим прорачунима или акцијама.

Ако је аргумент Рецорд то With грешка, та грешка ће бити враћена од стране функције и формула неће бити процењена.

Синтакса

With( Запис, Формула )

  • Запис - Обавезно. Треба да се реагује на запис. За вредности имена користите уметнуту синтаксу { name1: value1, name2: value2, ... }
  • Формула - Обавезно. Формула за процену за Запис. Формула може да се односи на било које од поља Запис директно као опсег записа.

Примери

Једноставне именоване вредности

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

Овај пример користи запис именованих вредности за израчунавање запремине цилиндара. With се користи за хватање свих улазних вредности заједно, што олакшава њихово одвајање од самог прорачуна.

Угнежђене With

Калкулатор камата који користи 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
      )
)

Овај пример гнезди With функције за креирање двослојног обрачуна за месечне исплате хипотеке . Докле год нема конфликта, све спољашње With именоване вредности су доступне унутар унутрашњег With.

Пошто се контроле клизача могу кретати само у инкрементима од 1, клизачи се деле или множе како би се ефективно створио прилагођени прираштај. У случају каматне стопе, RateSlider има своје Макс. својство постављено на 48, подељено са 8 за инкремент од 1/8 процента поена и подељено са 100 да би се претворило из процента у децималу, покривајући распон од 0,125% до 6%. У случају износа зајма, AmountSlider има своје својство Макс. постављено на 60 и помножено са 10.000, покривајући распон од 10.000 до 600.000.

Аутоматски With се прерачунава како се клизачи крећу и приказује се нова исплата кредита. Не користе се никакве променљиве и нема потребе за коришћењем својства OnChange за својство контрола клизача.

Ево детаљних упутстава за креирање ове апликације:

  1. Креирајте нову апликацију.
  2. Додајте Slider контролу и назовите је RateSlider. Подесите својство Макс. на 48.
  3. Додајте контролу Ознака лево од контроле клизача. Подесите својство Текст на "Каматна стопа:".
  4. Додајте контролу Ознака десно од контроле клизача. Подесите своју Текст особину на формулу РатеСлидер / 8 & "%".
  5. Додајте још једну контролу Slider и назовите је AmountSlider. Подесите својство Макс. на 60.
  6. Додајте контролу Ознака лево од контроле клизача. Подесите својство Текст на "Износ зајма:".
  7. Додајте контролу Ознака десно од контроле клизача. Подесите својство Text према формули AmountSlider/8 * 10000.
  8. Додајте још једну контролу Slider и назовите је YearsSlider. Подесите својство Макс. на 40.
  9. Додајте контролу Ознака лево од контроле клизача. Подесите својство Текст на "Број година:".
  10. Додајте контролу Ознака десно од контроле клизача. Подесите својство Text према формули YearsSlider.
  11. Додајте контролу Ознака и подесите њено својство Текст на формулу приказану изнад
  12. Додајте контролу Ознака лево од контроле последње ознаке. Подесите својство Текст на "Периодична месечна исплата:".

Примарни кључ се вратио из функције Закрпа

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
              )
      )
)

Овај пример додаје запис у табелу Поруџбина у SQL серверу. Затим користи враћени примарни кључ за поруџбину, који враћа функција Patch у поље ID поруџбине за креирање повезаних записа у табели Детаљи поруџбине.

Извучене вредности са правилним изразом

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)

Овај пример извлачи сате, минуте и секунде из вредности трајања ISO 8601, а затим користи ове подударности да би креирао вредност Датум/Време.

Имајте на уму да иако подударности садрже бројеве, они су и даље у текстуалном низу. Користите функцију Value за конвертовање у број пре обављања математичких операција.

Мапирање записа у компоненти

Погледајте запис мапирања.