With işlevi

Şunlar için geçerlidir: Tuval uygulamaları Masaüstü akışları Model yönetimli uygulamalar Power Pages Power Platform CLI

Değerleri hesaplar ve adlandırılmış değerlerin satır içi kayıtları da dahil olmak üzere bir kayda yönelik eylemler gerçekleştirir.

Açıklama

With işlevi, tek bir kayıt için bir formülü değerlendirir. Formül, bir değeri hesaplayabilir ve/veya veri değiştirme ya da bir bağlantıyla çalışma gibi eylemler gerçekleştirebilir. Kayıt tablosundaki tüm kayıtlar için bir formülü değerlendirmek üzere ForAll işlevini kullanın.

İşlenmekte olan kayıt alanları formül içinde bulunur. ThisRecord işlecini kullanın veya başka bir değere olduğu gibi yalnızca adla başvuruda bulunun. As işleci, formülünüzü daha anlaşılır ve iç içe geçmiş kayıtları erişilebilir hale getirmenizi kolaylaştıracak şekilde, işlenen kaydı adlandırmak için de kullanılabilir. Daha fazla bilgi için aşağıdaki örneklere ve kayıt kapsamıyla çalışma bölümüne bakın.

Karmaşık formüllerin, adlandırılmış daha küçük alt formüllere bölünerek okunabilirliğini artırmak için With kullanın. Bu adlandırılmış değerler, With işlevinin kapsamıyla sınırlı basit yerel değişkenler gibi davranır. UpdateContext işlevi ile kullanılan aynı satır içi kayıt sözdizimi With ile kullanılabilir. With işlevinin kullanılması içerdikleri, anlaşılmasının kolay olması ve herhangi bir bildirim formülü bağlamında kullanılabilmesi sebebiyle bağlam veya genel değişkenlere göre tercih edilir.

Yama veya Eşleme gibi işlevler tarafından döndürülen kayıt alanlara erişmek için İle kullanın. With bu işlevlerden gelen değeri, daha sonraki hesaplamalarda veya eylemlerde kullanılabilecek kadar uzun süre tutar.

With işlevine yönelik Kayıt bağımsız değişkeni bir hata ise bu hata, işlev tarafından döndürülür ve Formül değerlendirilmez.

Sözdizimi

İle( Kayıt,Formül )

  • Kayıt : Gerekli. İşlem yapılacak kayıt. Ad değerleri için satır içi sözdizimi { name1: value1, name2: value2, ... } dizisini kullanma
  • Formül – Gerekli. Kayıt için değerlendirilecek formül. Formül, Kayıt alanlarından herhangi birine doğrudan bir kayıt kapsamı olarak başvurabilir.

Örnekler

Basit adlandırılmış değerler

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

Bu örnekte, bir silindirin hacmini hesaplamak için adlandırılmış değerlerin bir kaydı kullanılır. Tüm giriş değerlerini bir arada yakalamak için kullanılıyor ve bu da bunları hesaplamanın kendisinden ayırmayı kolaylaştırıyor.

İç içe With

With işlevini kullanan faiz hesaplayıcısı.

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

Bu örnekte, aylık ipotek ödemeleri için iki katmanlı bir hesaplama oluşturmak üzere With işlevleri iç içe kullanılmıştır. Çatışma olmadığı sürece, adlandırılmış tüm dış With değerleri iç With işlevinde kullanılabilir.

slider denetimleri yalnızca 1'lik artışlarla hareket edebildiğinden özel bir artış oluşturmak için kaydırıcılar bölünür veya çarpılır. Faiz oranı söz konusu olduğunda RateSlider, Max özelliğini 48'e ayarlar, 1/8'lik yüzdesel nokta artış için 8'e bölünür ve yüzdeden ondalığa dönüştürmek için 100'e bölünür; böylece %0,125 ila %6 aralığını kapsar. Kredi miktarı söz konusu olduğunda AmountSlider, Max özelliğini 60'a ayarlar ve 10.000 ile çarparak 10.000 ile 600.000 aralığını kapsar.

Kaydırıcılar hareket ettikçe With işlevi otomatik olarak yeniden hesaplanır ve yeni kredi ödemesi görüntülenir. Herhangi bir değişken kullanılmaz ve slider denetimlerinin OnChange özelliğinin kullanılmasına gerek yoktur.

Bu uygulamayı oluşturmak için ayrıntılı yönergeler şunlardır:

  1. Yeni bir uygulama oluşturun.
  2. Slider denetimi ekleyin ve RateSlider olarak adlandırın. Max özelliğini 48 olarak ayarlayın.
  3. Slider denetiminin soluna bir Label denetimi ekleyin. Text özelliğini "Faiz Oranı:" olarak ayarlayın.
  4. Slider denetiminin sağına bir Label denetimi ekleyin. Text özelliğini RateSlider/8 & " %" formülü olarak ayarlayın.
  5. Başka bir Slider denetimi ekleyin ve AmountSlider olarak adlandırın. Max özelliğini 60 olarak ayarlayın.
  6. Bu Slider denetiminin soluna bir Label denetimi ekleyin. Text özelliğini "Kredi Miktarı:" olarak ayarlayın.
  7. Bu Slider denetiminin sağına bir Label denetimi ekleyin. Text özelliğini AmountSlider/8 * 10000 formülü olarak ayarlayın.
  8. Başka bir Slider denetimi ekleyin ve YearsSlider olarak adlandırın. Max özelliğini 40 olarak ayarlayın.
  9. Bu Slider denetiminin soluna bir Label denetimi ekleyin. Text özelliğini "Yıl Sayısı:" olarak ayarlayın.
  10. Bu Slider denetiminin sağına bir Label denetimi ekleyin. Text özelliğini YearsSlider formülü olarak ayarlayın.
  11. BirLabel denetimi ekleyin ve Text özelliğini yukarıda gösterilen formül olarak ayarlayın.
  12. Son label denetiminin soluna bir Label denetimi ekleyin. Text özelliğini Yinelenen Aylık Ödeme: olarak ayarlayın.

Birincil anahtar Patch işlevinden döndürüldü

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

Bu örnek, SQL Server'daki Sipariş tablosuna bir kayıt ekler. Daha sonra, OrderDetails tablosunda ilgili kayıtları oluşturmak için OrderID alanındaki Patch işlevi tarafından döndürülen sipariş için döndürülen birincil anahtarı kullanır.

Normal bir ifadeyle ayıklanan değerler

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)

Bu örnek, ISO 8601 süre değerinden saatleri, dakikaları ve saniyeleri ayıklar ve ardından bir Tarih/Saat değeri oluşturmak için bu alt eşleşmeleri kullanır.

Alt eşleşmeler sayı içermesine rağmen bunların hala bir metin dizesinde bulunduğunu unutmayın. Matematiksel işlemleri gerçekleştirmeden önce sayıya dönüştürmek için Value işlevini kullanın.

Bileşen içindeki bir kaydı eşleme

Bkz. Kayıt eşleme.