Aracılığıyla paylaş


İş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 Slider1.Value
Color.Red
Bir tablo denetimi veya numaralandırmadaki bir özelliği ayıklar. Geriye dönük uyumluluk için ! kullanılabilir.
.
dile bağımlı
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 Filter(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 "hello" & " " & "world" Birden çok dizeyi sürekli olarak görünür hale getirir
&& or And Mantıksal işleçler Price < 100 && Slider1.Value = 20
veya Fiyat < 100 And Slider1.Value = 20
Mantıksal birleşme, And işlevi ile eşdeğer
|| veya Or   Fiyat < 100 || Slider1.Value = 20 or Price < 100 Or Slider1.Value = 20 Mantıksal ayrılma, Or işlevi ile eşdeğer
! veya Not   !(Fiyat < 100) veya Not (Fiyat < 100) Mantıksal değilleme, Not işlevi ile eşdeğer
exactin Üyelik işleçleri Gallery1.Selected exactin SavedItems Bir koleksiyona veya tabloya ait olma
exactin   "Windows" exactin "Windows işletim sisteminde pencereleri görüntülemek için..." Alt dize testi (büyük/küçük harfe duyarlı)
içinde   Gallery1.Selected in SavedItems Bir koleksiyona veya tabloya ait olma
içinde   "The keyboard and the monitor..." ifadesindeki "The" Alt dize testi (büyük/küçük harfe duyarlı değil)
@ Kesinleştirme işleci MyTable[@fieldname] Alan kesinleştirme
@   [@MyVariable] Genel kesinleştirme
,
[dile bağımlı]
Liste ayracı If( 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 Collect(T, A); Navigate(S1, "") Davranış özelliklerindeki ayrı işlev çağrıları. Zincirleme işleci dile bağlıdır.
Olarak As işleci AllCustomers As Customer Galeriler ve kayıt kapsamı işlevlerinde ThisItem ve ThisRecord'u geçersiz kılar. As, daha iyi ve belirli bir ad sağlamak açısından yararlıdır ve özellikle iç içe yerleştirilmiş senaryolarda önemlidir.
Kendisi Self işleci Self.Fill Geçerli denetimin özelliklerine erişim
Ana Parent işleci Parent.Fill Bir denetim kapsayıcısının özelliklerine erişim
ThisItem ThisItem işleci ThisItem.FirstName Bir Galeri veya form denetiminin alanlarına erişim
ThisRecord ThisItem işleci 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, "E" in ProductName)

    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
ThisItem Gallery denetimi
Edit form denetimi
Display form denetimi
Gallery veya form denetimindeki geçerli kaydın varsayılan adı.
ThisRecord ForAll, Filter, With, Sum ve diğer record scope işlevleri ForAll ve diğer kayıt kapsamı işlevlerinde geçerli kaydın varsayılan adı.
Adolarak Gallery denetimi
ForAll, Filter, With, Sum ve diğer record scope 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, bir kayıt kapsamı olan işlevlerde kullanı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 kullanılarak ima edilir; örneğin, bu durumda şunu yazabiliriz:

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. ThisItem her zaman gerekli olsa da ThisRecord isteğe bağlıdır.

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 ThisRecord adını 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 yeni bir satır oluşturmak için iki kez kullanılır, önce sütunları ve sonra satırları birleştirmek için Char(10) ile birlikte.

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.
Self işleci 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.
Parent işleci 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 Parent, denetimlerin özellikleri değil, işleçtirler. 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ı dillerde yerelleştirilmeyen addır. 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 ve son kullanıcılar tarafından görülmesi amaçlanan addır. 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:
    Table[@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ı.