İşleçler ve Tanımlayıcılar

Not

Microsoft Power Fx, tuval uygulamaları formül dilinin yeni adıdır. Dili tuval uygulamalarından ayırdığımız, Microsoft Power Platform ürünlerine entegre ettiğimiz ve açık kaynak olarak sunduğumuz bu süreçte bu makaleler geliştirilmeye devam eder. Dilin tanıtımı için Microsoft Power Fx Genel Bakış makalesiyle başlayın.

Microsoft Power Fx uygulamasındaki operatörler aşağıda açıklanmıştır. Bu işleçlerden bazıları yazarın diline bağlıdır. Daha fazla bilgi edinmek için bkz. Genel uygulamalar.

Simge Tür Sözdizimi Açıklama
. Özellik Seçici Kaydırıcı1.Değer
Color.Red
Bir tablo denetimi veya numaralandırmadaki bir özelliği ayıklar. Geriye dönük uyumluluk için ! kullanılabilir.
.
Dile bağlı
Ondalık ayracı 1.23 Bir sayının tam ve kesirli bölümleri arasındaki ayraç. Karakter dile bağlıdır.
( ) Parantez Filtre (T, A < 10)

(1 + 2) * 3
Öncelik sırasını zorlar ve daha geniş bir ifadedeki alt ifadeleri gruplar
+ Aritmetik işleçler 1 + 2 Toplama
-   2 - 1 Çıkarma ve işaret
*   2 * 3 Çarpma
/   2 / 3 Bölme (ayrıca bkz. Mod işlevi)
^   2 ^ 3 Üs olarak gösterme, Power işlevi ile eşdeğer
%   20% Yüzde ("*1/100" ile eşdeğer)
= Karşılaştırma işleçleri Fiyat = 100 Eşittir
>   Fiyat > 100 Büyüktür
>=   Fiyat >= 100 Büyüktür veya eşittir
<   Fiyat < 100 Küçüktür
<=   Fiyat <= 100 Küçüktür veya eşittir
<>   Fiyat <> 100 Eşit değil
& Dize birleştirme işleci "Merhaba" & " " & "Dünya" Birden çok dizeyi sürekli olarak görünür hale getirir
&&& veya ve Mantıksal işleçler Fiyat < 100 & & Kaydırıcı1.Değer = 20
veya Fiyat < 100 And Slider1.Value = 20
Mantıksal birleşme, And işlevi ile eşdeğer
|| veya Veya   Fiyat < 100 || Slider1.Value = 20 veya Fiyat < 100 Veya Slider1.Value = 20 Mantıksal ayrılma, Or işlevi ile eşdeğer
! veya Not   ! (Fiyat < 100) veya değil (Fiyat < 100) Mantıksal değilleme, Not işlevi ile eşdeğer
tam olarak Üyelik işleçleri Galeri1.SavedItems'ta tam olarak seçildi Bir koleksiyona veya tabloya ait olma
tam olarak   "Windows" tam olarak "Windows işletim sisteminde pencereleri görüntülemek için..." Alt dize testi (büyük/küçük harfe duyarlı)
içinde   Gallery1.SavedItems'ta Seçildi Bir koleksiyona veya tabloya ait olma
içinde   "Klavye ve monitör..." Alt dize testi (büyük/küçük harfe duyarlı değil)
@ Anlam ayrımı işleci Tablom[@fieldname] Alan kesinleştirme
@   [@MyVariable] Genel kesinleştirme
,
[dile bağımlı]
Liste ayracı Eğer(X < 10, "Düşük", "İyi")
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Şunları ayırır:
  • işlev çağrılarındaki bağımsız değişkenler
  • bir kayıttaki alanlar
  • bir tablodaki kayıtlar
Bu karakter dile bağlıdır.
;
[dile bağımlı]
Formül zincirleme Topla(T, A); Gezinmek(S1, "") Davranış özelliklerindeki ayrı işlev çağrıları. Zincirleme işleci dile bağlıdır.
Gibi Operatör olarak Müşteri Olarak Tüm Müşteriler Galeriler ve kayıt kapsamı işlevlerinde ThisItem ve ThisRecord'u geçersiz kılar. As , daha iyi, belirli bir ad sağlamak için kullanışlıdır ve özellikle iç içe senaryolarda önemlidir.
Kendi Kendi kendine operatör Kendi Kendine Doldurma Geçerli denetimin özelliklerine erişim
üst öğe Üst öğe operatörü Üst.Doldur Bir denetim kapsayıcısının özelliklerine erişim
Bu Öğe ThisItem operatörü ThisItem.FirstName Bir Galeri veya form denetiminin alanlarına erişim
Bu Kayıt ThisItem operatörü ThisRecord.FirstName ForAll, Sum, With ve diğer kayıt kapsamı işlevlerinde kaydın tüm kayıt alanları ve bireysel alanlarına erişim. As işleciyle geçersiz kılınabilir.

in ve exactin işleçleri

Veri kaynağındaki (örneğin, koleksiyon veya içeri aktarılan tablo) bir dizeyi bulmak için in ve exactin işleçlerini kullanın. in işleci, büyük/küçük harfe bakılmaksızın eşleşmeleri tanımlar ve exactin işleci yalnızca büyük/küçük harf kullanımının aynı olması halinde eşleşmeleri tanımlar. Bir örnek aşağıda verilmiştir:

  1. Stok adlı bir koleksiyonu oluşturun veya içeri aktarın ve Galeride görüntü ve metin gösterme bölümündeki ilk yordamda açıklandığı şekilde galeride gösterin.

  2. Galerinin Items özelliğini şu formül olarak ayarlayın:
    Filter(Inventory, ProductName'de "E")

    Belirttiğiniz harfi içermeyen tek ürün olması nedeniyle galeride Callisto dışındaki tüm ürünler gösterilir.

  3. Galerinin Items özelliğini şu formül olarak ayarlayın:
    Filter(Inventory, "E" exactin ProductName)

    Belirttiğiniz harfi, belirttiğiniz büyük/küçük harf düzeninde içeren tek ad olması nedeniyle galeride yalnızca Europa gösterilir.

ThisItem, ThisRecord ve As işleçleri

Birkaç denetim ve işlev, bir tablonun bağımsız kayıtlarına formüller uygular. Bir formülde tek bir kayda başvuruda bulunmak için aşağıdakilerden birini kullanın:

İşleç Şunlar için geçerlidir: Açıklama
Bu Öğe Galeri kontrolü
Düzenleme formu denetimi
Ekran formu kontrolü
Gallery veya form denetimindeki geçerli kaydın varsayılan adı.
Bu Kayıt ForAll,Filter,With,Sum ... ... ... ve diğer kayıt kapsamı işlevleri ForAll ve diğer kayıt kapsamı işlevlerinde geçerli kaydın varsayılan adı.
İsim olarak Galeri kontrolü
ForAll,Filter,With,Sum ... ... ... ve diğer kayıt kapsamı işlevleri
Geçerli kayıt için bir ad tanımlayarak varsayılan ThisItem veya ThisRecord'un yerini alır. Formüllerin anlaşılmasını kolaylaştırmak ve içe içe geçme sırasında karışıklığı gidermek için As işlevini kullanın.

ThisItem işleci

Örneğin aşağıdaki Galeri denetiminde, Items özelliği Çalışanlar ceri kaynağına (Northwind Traders örneğindeki Çalışanlar varlığı gibi) ayarlıdır:

Employees

Bir galeride gösterilen çalışanlar.

Galerideki ilk öğe, her çalışan için çoğaltılan bir şablondur. Şablonda, resim için formül, geçerli öğeye başvuruda bulunmak için ThisItem'ı kullanır:

ThisItem.Picture

Bir çalışanın resmi için formül.

Benzer şekilde, ad formülü de bu ThisItem'ı kullanılır:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

Bir çalışanın adı ve soyadı için formül.

ThisRecord işleci

ThisRecord , kayıt kapsamına sahip işlevlerdekullanılır. Örneğin, yalnızca M ile başlayan adları göstermek için galerinin Items özelliğinde Filter işlevini kullanabiliriz:

Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )

ThisRecord kullanarak çalışan adına göre filtreleme.

ThisRecord isteğe bağlıdır ve alanları doğrudan kullanarak ima edilir, örneğin, bu durumda şunu yazabilirdik:

Filter( Employees, StartsWith( 'First Name', "M" ) )

İsteğe bağlı olsa da, ThisRecord işlevinin kullanılması formüllerin daha kolay anlaşılmasını sağlar ve bir alan adının aynı zamanda ilişki adı olabileceği belirsiz durumlarda gerekli olabilir. ThisRecord isteğe bağlıdır, ancak ThisItem her zaman gereklidir.

Patch, Collect ve diğer kayıt kapsamı işlevleriyle kaydın tamamına başvuruda bulunmak için ThisRecord'u kullanın. Örneğin, aşağıdaki formül etkin olmayan tüm çalışanların durumunu etkin olarak ayarlar:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees, 
              Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )

As işleci

Varsayılan ThisItem veya ThisRecord'u geçersiz kılarak bir galerideki bir kaydı veya kayıt kapsamı işlevini adlandırmak için As işlecini kullanın. Kaydın adlandırılması, formüllerinizin anlaşılmasını kolaylaştırabilir ve diğer kapsamlardaki kayıtlara erişmek için iç içe durumlarda gerekli olabilir.

Örneğin, galerimizin Items özelliğini, bir Çalışanla çalıştığımızı belirlemek için As kullanacak şekilde değiştirebilirsiniz:

Employees As Employee

As işlecini kullanarak oluşturulan çalışanlar galerisi.

Resim ve ad formülleri, geçerli kayıt için bu adı kullanacak şekilde ayarlanır:

Employee.Picture

As işleciyle Çalışan adı kümesini kullanan bir çalışanın resmi.

Employee.'First Name' & " " & Employee.'Last Name'

As işleciyle Çalışan adı kümesini kullanan bir çalışanın adı ve soyadı.

As , varsayılan adı ThisRecord değiştirmek için kayıt kapsamı işlevleriyle de kullanılabilir. Bunu, çalıştığımız kaydı açıklığa kavuşturmak için önceki örneğimize uygulayabiliriz:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees As Employee, 
              Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )

Galerileri ve kayıt kapsamı işlevlerini iç içe geçirme sırasında, ThisItem ve ThisRecord her zaman en içteki kapsamı gösterir ve dış kapsamlardaki kayıtları kullanılamaz durumda bırakır. Her bir kapsama benzersiz ad vererek tüm kayıt kapsamlarını kullanılabilir hale getirmek için As'yi kullanın.

Örneğin, bu formül iki ForAll işlevini iç içe geçirerek bir metin dizesi olarak bir satranç tahtası modeli üretir:

Concat( 
    ForAll( Sequence(8) As Rank,
        Concat( 
            ForAll( Sequence(8) As File, 
                    If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " ) 
            ),
            Value 
        ) & Char(10) 
    ), 
    Value 
)

BirLabel denetiminin Text özelliğini bu formüle ayarladığınızda şu gösterilir:

Label denetiminde gösterilen satranç tahtası metni.

Burada meydana gelenleri yakından inceleyelim:

  • Sequence işlevinden numaralı 8 kayıttan oluşan adsız bir tabloyu yinelemekle başlayacağız. Bu döngü, genellikle Rank olarak adlandırılır ve panonun her satırı için kullanılır; bu yüzden bir ad veriyoruz.
  • Her satır için adsız bir 8 sütun tablosunu yineliyoruz ve ortak File adını veriyoruz.
  • Rank.Value + File.Value tek bir sayı ise, karesi bir X işareti, aksi takdirde bir nokta alır. Formülün bu kısmı As işleci kullanılarak mümkün olan, her iki ForAll döngülerine başvuruda bulunur.
  • Concat , önce sütunları ve ardından satırları birleştirmek için iki kez kullanılır ve yeni bir satır oluşturmak için bir Char(10) atılır.

Benzer bir örnek, ForAll işlevleri yerine içe içe Gallery denetimleriyle mümkün olabilir. Rank için dikey galeriden başlayalım. Bu gallery denetiminde şu Itemsformülü bulunur:

Sequence(8) as Rank

Rank yinelemesi sağlayan dış galeri çizimi.

Bu galeride, her Rank ile çoğaltılacak File için Items özelliğiyle yatay bir galeri yerleştireceğiz:

Sequence(8) as File

File yinelemesi sağlayan iç galeri çizimi.

Ve son olarak, bu galeride her bir File ve Rank için çoğaltılacak bir Label denetimi ekleyeceğiz. Tüm alanı dolduracak şekilde boyutlandıracağız ve bu formüle renk sağlamak için Fill özelliğini kullanacağız:

If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )

İki galerinin içinde satranç tahtası için değişen renkler sağlayan Labet denetimi.

Self ve Parent işleçleri

Bir denetime ve bir formül içindeki özelliklerine başvurmanın üç yolu vardır:

Yöntem Açıklama
Denetim adına göre Herhangi bir denetime uygulamadaki herhangi bir yerden adıyla başvurulabilir.

Örneğin, Label1.Fill, adı Label1 olan denetimin dolgu özelliğine başvurur.
Kendi kendine operatör Bir formül yazarken aynı denetimin başka bir özelliğine başvuruda bulunmak genellikle daha kolaydır. Ada göre mutlak bir başvuru kullanmak yerine, tek bir self işlevine göreli başvuru kullanmak daha kolay ve rahattır. Self işleci geçerli denetime bu kolay erişimi sağlar.

Örneğin, Self.Fill geçerli denetimin dolgu rengine başvurur.
Üst öğe operatörü Bazı denetimler, Screen ve Gallery denetimleri gibi başka denetimleri barındırır. İçinde başka denetimler barındıran denetim üst olarak adlandırılır. Self işleci gibi, Parent işleci de container denetimine kolay bir göreli başvuru sağlar.

Örneğin, Parent.Fill geçerli denetimin kapsayıcısı olan denetimin dolgu özelliğine başvurur.

Self veüst öğe işleçlerdir ve denetimlerin kendilerindeki özellikler değildir. Parent.Parent, Self.Parent veya Parent.Self başvuruları desteklenmez.

Tanımlayıcı adları

Değişkenlerin, veri kaynaklarının, sütunların ve diğer nesnelerin adları herhangi bir Unicode içerebilir.

Boşluk veya başka bir özel karakter içeren bir adı tek tırnak içine alın.
Adda tek bir tek tırnak işaretini göstermek için iki tek tırnak işaretini birlikte kullanın. Özel karakter içermeyen adlar için tek tırnak işareti gerekir.

Bir tabloda karşılaşabileceğiniz bazı örnek sütun adları ve bunların bir formülde nasıl temsil edildiği aşağıda açıklanmaktadır:

Veritabanında sütun adı Formülde sütun başvurusu
SimpleName SimpleName
NameWith123Numbers NameWith123Numbers
Boşluk içeren ad 'Name with spaces'
"Çift" tırnak içeren ad 'Name with "double" quotes'
"Tek" tırnak içeren ad 'Name with ''single'' quotes'
@ işareti içeren ad 'Name with an @ at sign'

Çift tırnak işaretleri metin dizelerini belirlemek için kullanılır.

Adları ve mantıksal adları görüntüleme

SharePoint ve Microsoft Dataverse gibi bazı veri kaynaklarında aynı tablo veya veri sütununa başvuran iki farklı ad bulunur:

  • Mantıksal ad - Benzersiz olduğu garanti edilen, oluşturulduktan sonra değişmeyen, genellikle boşluklara veya diğer özel karakterlere izin vermeyen ve farklı dillere yerelleştirilmeyen bir ad. Sonuç olarak, ad şifreli olabilir. Bu adlar profesyonel geliştiriciler tarafından kullanılır. Örneğin, cra3a_customfield. Bu ad, şema adı veya yalnızca ad olarak da adlandırılabilir.

  • görünen ad- Kullanıcı dostu olan ve son kullanıcılar tarafından görülmesi amaçlanan bir ad. Bu ad benzersiz olmayabilir, zamanla değişebilir, boşluklar ve herhangi bir Unicode karakteri içerebilir ve farklı dillerde yerelleştirilebilir. Yukarıdaki örneğe karşılık gelen görünen ad sözcükler arasında boşluk olan Özel Alan olabilir.

Görünen adların anlaşılması daha kolay olduğundan Power Fx, bunları seçimler olarak önerir ve mantıksal adlar önermez. Mantıksal adlar önerilmese de, dolaylı olarak yazıldıklarında kullanılabilirler.

Örneğin, Dataverse'teki bir varlığa Özel Alan eklediğinizi varsayalım. Sistem tarafından size yalnızca alanı oluştururken değiştirebileceğiniz bir mantıksal ad atanır. Sonuç aşağıdakine benzer olabilir:

Firmalar alanına başvuru yazarken bu görünen ad olduğundan "Özel Alan" kullanılması önerilir. Bu adda bir boşluk olduğundan tek tırnak işareti kullanılmalıdır:

Öneri seçildikten sonra formül çubuğunda "Özel Alan" gösterilir ve veriler alınır:

Alanın

Önerilmese de bu alan için mantıksal adı da kullanabiliriz. Bu, aynı verilerin alınmasına neden olur. Bu ad boşluk veya özel karakter içermediğinden tek tırnak gerekmez:

Alanın cr5e3_customfield mantıksal adının kullanımını gösteren Studio formül çubuğu.

Perde arkasında, formüllerde görülen görünen adlar ile temel mantıksal adlar arasındaki eşleme korunur. Mantıksal adların veri kaynağı ile etkileşim için kullanılması gerektiğinden bu eşleme, geçerli görünen adın otomatik olarak mantıksal ada dönüştürülmesi için kullanılır ve ağ trafiğinde görünen eşlemedir. Örneğin, bir görünen ad değişirse veya farklı bir dildeki geliştirici uygulamayı düzenlerse bu eşleme aynı zamanda yeni görünen adlara geçiş yapmak için de kullanılır.

Not

Uygulama ortamlar arasında taşınırken mantıksal adlar çevrilmez. Mantıksal adlar ortamlar arasında tutarlı olduğundan bu, Dataverse sistemi varlık ve alan adları için bir sorun olmamalıdır. Ancak yukarıdaki bu örnekte cra3a_customfield gibi herhangi bir özel alanın farklı bir ortam öneki olabilir (bu örnekte cra3a). Görünen adlar, yeni ortamdaki görünen adlarla eşleştirilebildikleri için tercih edilir.

Ad kesinleştirme

Görünen adlar benzersiz olmadığından aynı görünen ad aynı varlıkta birden fazla görüntülenebilir. Bu durumda mantıksal ad çakışan adlardan biri için parantez içinde görünen adın sonuna eklenir. Yukarıdaki örneğe göre, cra3a_customfieldalt mantıksal adını içeren Özel Alan ile aynı görünen ada sahip ikinci bir alan varsa öneriler gösterilir:

Ad kesinleştirme dizeleri, varlıkların, seçenek kümelerinin ve diğer Dataverse öğelerinin adları gibi ad çakışmalarının oluştuğu diğer durumlarda eklenir.

Kesinleştirme işleci

Filter, AddColumns ve Sum gibi bazı işlevler, her kayıt işlenirken tablo alanlarına erişime yönelik kayıt kapsamları oluşturur. Kayıt kapsamıyla eklenen alan adları, uygulamanın başka yerlerindeki aynı adları geçersiz kılar. Bu durumda @ kesinleştirme işlecini kullanarak kayıt kapsamının dışındaki değerlere erişebilirsiniz:

  • İç içe kayıt kapsamlarındaki değerlere erişmek için şu deseni kullanarak üzerinde çalışılan tablonun adıyla birlikte @ işlecini kullanın:
    Tablo[@FieldName]
  • Veri kaynakları, koleksiyonlar ve bağlam değişkenleri gibi genel değerlere erişmek için [@ObjectName] desenini (tablo gösterimi olmadan) kullanın.

Daha fazla bilgi ve örnek için bkz. kayıt kapsamları.