İş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: 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:
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.
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.
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
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
Benzer şekilde, ad formülü de bu ThisItem'ı kullanılır:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
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 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
Resim ve ad formülleri, geçerli kayıt için bu adı kullanacak şekilde ayarlanır:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
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:
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
Bu galeride, her Rank ile çoğaltılacak File için Items özelliğiyle yatay bir galeri yerleştireceğiz:
Sequence(8) as File
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 )
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:
Ö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:
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ı.