Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Functions | Platí pro |
|---|---|
|
Operátoři Identifikátory |
|
|
ThisItem Já Rodič |
|
Některé z těchto operátorů jsou závislé na jazyku autora. Další informace o podpoře jazyků v aplikacích plátna najdete v článku Globální aplikace.
| Symbol | Typ | Příklad | Popis |
|---|---|---|---|
| '...' | Identifikátor | 'Název účtu' | Identifikátory, které obsahují speciální znaky, včetně mezer, jsou uzavřeny do jednoduchých uvozovek |
| "..." | Textový řetězec | "Ahoj světe" | Textové řetězce jsou uzavřeny do dvojitých uvozovek |
| $"..." | Interpolace řetězců | $"Vážený {FirstName}," | Vzorce vložené do textového řetězce |
| . | Výběr vlastnosti |
Posuvník1.Hodnota Color.Red Acceleration.X |
Extrahuje vlastnost z tabulky, ovládacího prvku, signálu nebo výčtu. Pro zpětnou kompatibilitu lze použít také !. |
|
. [zavislý na jazyku] |
Oddělovač desetinných míst | 1.23 | Oddělovač mezi celou a zlomkovou částí čísla. Znak závisí na jazyku. |
| ( ) | Závorky |
Filter(T; A < 10) (1 + 2) * 3 |
Vynucuje přednosti a seskupuje dílčí výrazy do větších výrazů. |
| + | Aritmetické operátory | 1 + 2 | Součet |
| - | 2-1 | Odčítání a znaménko | |
| * | 2 * 3 | Násobení | |
| / | 2/3 | Dělení (viz také funkce Mod) | |
| ^ | 2 ^ 3 | Umocnění, odpovídá funkci Power | |
| % | 20% | Procento (odpovídá "* 1/100") | |
| = | Operátory porovnání | Cena = 100 | Rovno |
| > | Cena > 100 | Je větší než | |
| >= | Cena >= 100 | Větší než nebo rovno | |
| < | Cena < 100 | Je menší než | |
| <= | Cena <= 100 | Menší než nebo rovno | |
| <> | Cena <> 100 | Nikoli rovno | |
| & | Operátor spojení řetězců | "ahoj" & " " & "svět" | Zobrazí více řetězců tak, aby vypadaly souvisle. |
| && nebo And | Logické operátory |
Cena < 100 && Slider1.Value = 20 nebo Cena < 100 And Slider1.Value = 20 |
Logická konjunkce, odpovídá funkci And |
| || nebo Or | Cena < 100 || Slider1.Value = 20 nebo Cena < 100 Or Slider1.Value = 20 | Logická disjunkce, odpovídá funkci Or | |
| . nebo Not | !(Cena < 100) nebo Not (Cena < 100) | Logická negace, odpovídá funkci Not | |
| exactin | Operátory členství | Galerie 1. Vybráno přesně v SavedItems | Patřící do kolekce nebo tabulky |
| exactin | „Windows“ exactin „Pokud chcete zobrazit okno v operačním systému Windows…" | Test podřetězců (rozlišování velkých a malých písmen) | |
| v | Galerie 1. Vybráno v SavedItems | Patřící do kolekce nebo tabulky | |
| v | "Klávesnice" in "Klávesnice a monitor...“ | Test podřetězců (rozlišování velkých a malých písmen) | |
| @ | Operátor mnohoznačnosti | MyTable[@fieldname] | Mnohoznačnost polí |
| @ | [@MyVariable] | Globální mnohoznačnost | |
|
, [zavislý na jazyku] |
Oddělovač seznamu |
If( X < 10; "Nízká"; "Dobrá" ) { X: 12, Y: 32 } [1, 2, 3] |
Odděluje: Tento znak závisí na jazyku. |
|
; [zavislý na jazyku] |
Řetězení vzorců | Collect(T; A); Navigate(S1; "") | Volání funkcí můžete oddělit ve vlastnostech chování. Operátor řetězení závisí na jazyku. |
| Jako | Operátor As | AllCustomers jako zákazník | Přepíše ThisItem a ThisRecord v galeriích a zaznamená funkce rozsahu. Operátor As je užitečný pro poskytnutí lepšího, konkrétnějšího jména a je zvláště důležitý ve vnořených scénářích. |
| Vlastní | Operátor Self | Self.Fill | Poskytuje přístup k vlastnostem aktuálního ovládacího prvku |
| Nadřazený | Operátor nadřazení | Parent.Fill | Přístup k vlastnostem kontejneru ovládacího prvku |
| ThisItem | Operátor ThisItem | ThisItem.FirstName | Přístup k polím ovládacího prvku Gallery nebo Form |
| ThisRecord | Operátor ThisRecord | ThisRecord.FirstName | Přístup k úplnému záznamu a jednotlivým polím záznamu uvnitř funkce ForAll, Sum, With a dalších funkcí rozsahu záznamu. Lze přepsat pomocí operátoru As. |
Poznámka:
Operátor @ lze použít také k ověření typu objektu záznamu podle zdroje dat. Například Collect(coll,Account@{'Account Number': 1111})
operátory in a exactin
Operátory in a exactin použijte k vyhledání řetězce ve zdroji dat, jako je například kolekce nebo importovaná tabulka. Operátor in identifikuje shody bez ohledu na malá a velká písmena a operátor exactin identifikuje pouze takové shody, které mají stejná velká a malá písmena. Tady je příklad:
Naimportujte nebo vytvořte kolekci s názvem Inventory a zobrazte ji v galerii podle popisu v prvním postupu v článku o zobrazení obrázků a textů v galerii.
Nastavte vlastnost Items galerie na tento vzorec:
Filter(Inventory; "E" in ProductName)Galerie zobrazí všechny produkty, kromě produktu Callisto, protože název tohoto produktu jako jediný neobsahuje vámi zadané písmeno.
Změňte vlastnost Items galerie na tento vzorec:
Filter(Inventory; "E" exactin ProductName)Galerie zobrazí pouze produkt Europa, protože jako jediný obsahuje vámi zadané písmeno velké E.
Operátory ThisItem, ThisRecord a As
Několik ovládacích prvků a funkcí aplikuje vzorce na jednotlivé záznamy tabulky. Chcete-li odkazovat na jednotlivý záznam ve vzorci, použijte jednu z následujících možností:
| Operátor | Platí pro | Popis |
|---|---|---|
| ThisItem | Ovládací prvek Galerie Ovládací prvek Formulář pro úpravy Ovládací prvek Formulář pro zobrazení |
Výchozí název aktuálního záznamu v ovládacím prvku Gallery nebo formulář. |
| ThisRecord | Funkce ForAll, Filter, With, Sum a ostatní funkce rozsahu záznamu | Výchozí název aktuálního záznamu ve funkci ForAll a ostatních funkcích rozsahu záznamu. |
| Asnázev | Ovládací prvek Galerie ForAll, Filter, With, Sum a ostatní funkce rozsahu záznamu |
Definuje název pro aktuální záznam, čímž nahrazuje výchozí ThisItem nebo ThisRecord. Funkci As použijte pro usnadnění porozumění vzorcům a vyřešení dvojznačnosti při vnoření. |
Operátor ThisItem
Například v následujícím ovládacím prvku Gallery je vlastnost Items nastavena na zdroj dat Zaměstnanci (například tabulku Zaměstnanci, která je součástí ukázky Northwind Traders):
Employees
První položka v galerii je šablona, která je replikována pro každého zaměstnance. Vzorec pro obrázek v šabloně používá ThisItem k odkazování na aktuální položku:
ThisItem.Picture
Podobně používá vzorec pro název také ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
Operátor ThisRecord
ThisRecord se používá ve funkcích, které mají rozsah záznamu. Můžeme například použít funkci Filter s vlastností Items galerie, aby se zobrazila pouze křestní jména začínající na M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord je volitelný a implikovaný přímým použitím polí, například v tomto případě bychom mohli napsat:
Filter( Employees, StartsWith( 'First Name', "M" ) )
I když je použití funkce ThisRecord volitelné, může usnadnit porozumění vzorců a může být potřeba v nejednoznačných situacích, kdy název pole může být také název vztahu. Funkce ThisRecord je volitelná, zatímco funkce ThisItem je vždy požadována.
Funkci ThisRecord použijte k odkazování na celý záznam s funkcemi rozsahu Patch, Collect a dalšími funkcemi rozsahu záznamu. Například následující vzorec nastaví stav pro všechny neaktivní zaměstnance na aktivní:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Operátor As
Použijte operátor As k pojmenování záznamu v galerii nebo funkci rozsahu záznamu, čímž se přepíše výchozí ThisItem nebo ThisRecord. Pojmenování záznamu může usnadnit pochopení vašich vzorců a ve vnořených situacích může být vyžadováno pro přístup k záznamům v jiných oblastech.
Například můžete upravit vlastnost Items naší galerie k použití As pro určení, že pracujeme se zaměstnancem:
Employees As Employee
Vzorce pro obrázek a jméno jsou upraveny tak, aby používaly tento název pro aktuální záznam:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As lze také použít s funkcemi rozsahu záznamu k nahrazení výchozího názvu ThisRecord. Můžeme to použít na náš předchozí příklad, abychom objasnili záznam, se kterým pracujeme:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Při vnoření galerií a funkcí rozsahu záznamu ThisItem a ThisRecord vždy odkazuje na nejvnitřnější rozsah, takže záznamy ve vnějším rozsahu nejsou k dispozici. Použití As ke zpřístupnění všech rozsahů záznamů tím, že každému z nich přidáte jedinečný název.
Tento vzorec například vytvoří šachovnici jako textový řetězec vnořením dvou funkcí ForAll:
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
)
Nastavení vlastnosti Text ovládacího prvku Label na tento vzorec:
Pojďme se podívat, co se zde děje:
- Začneme iterací nepojmenované tabulky 8 číslovaných záznamů z funkce Sequence. Tato smyčka je pro každou řadu desky, která se běžně označuje jako Pořadí, takže ji takto nazveme.
- Pro každý řádek iterujeme další nepojmenovanou tabulku 8 sloupců a dáme jí společný název Soubor.
- Pokud je Rank.Value + File.Value liché číslo, druhá mocnina vrátí X, jinak tečku. Tato část vzorce odkazuje na obě smyčky ForAll, což je možné díky operátoru As.
- Concat se použije dvakrát, nejprve k sestavení sloupců a pak řádků, s funkcí Char(10) pro vytvoření nového řádku.
Podobný příklad je možný s vnořenými ovládacími prvky Gallery namísto funkcí ForAll. Začněme vertikální galerií pro Pořadí. Tento ovládací prvek galerie bude mít vzorec Položky, který bude vypadat takto:
Sequence(8) as Rank
V této galerii umístíme horizontální galerii pro Soubor, která bude replikována pro každé Pořadí, s vlastností Items:
Sequence(8) as File
A konečně v této galerii přidáme ovládací prvek Label, který bude replikován pro každý Soubor a každé Pořadí. Změníme velikost tak, aby vyplnila celý prostor a použila vlastnost Fill pro poskytnutí barvy s tímto vzorcem:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Operátory Self a Parent
Existují tři způsoby, jak odkazovat na ovládací prvek a jeho vlastnosti v rámci vzorce:
| Způsob | Popis |
|---|---|
| Podle názvu ovládacího prvku | Kdekoli v aplikaci můžete odkazovat na jakýkoli ovládací prvek prostřednictvím jeho názvu. Například Label1.Fill odkazuje na vlastnost výplně ovládacího prvku, jehož název je Label1. |
| Operátor Self | Při psaní vzorce je často vhodné odkazovat na jinou vlastnost stejného ovládacího prvku. Namísto použití absolutního odkazu na název je jednodušší a přenosnější použít relativní odkaz na jeden prvek Self. Operátor Self poskytuje přístup k vlastnostem aktuálního ovládacího prvku. Například Self.Fill odkazuje na barvu výplně aktuálního ovládacího prvku. |
| Operátor Parent | Některé ovládací prvky jsou hostiteli dalších ovládacích prvků, například Screen a Gallery. Hostující ovládací prvek jiných ovládacích prvků uvnitř něj nazýváme Parent (nadřazený). Stejně jako operátor Self i operátor Parent poskytuje snadný relativní odkaz na ovládací prvek kontejneru. Například Parent.Fill odkazuje na vlastnost výplně ovládacího prvku, který je kontejnerem pro aktuální ovládací prvek. |
Self a Parent jsou operátory a ne vlastnosti v samotných ovládacích prvcích. Při odkazování na Parent.Parent není Self.Parent nebo Parent.Self podporován.
Názvy identifikátorů
Názvy proměnných, zdroje dat, sloupce a další objekty mohou obsahovat libovolný Unicode.
Použijte jednoduché uvozovky kolem názvu, který obsahuje mezeru nebo jiný speciální znak.
Dvě jednoduché uvozovky představují jednu jednoduchou uvozovku v názvu. Názvy, které neobsahují speciální znaky, nevyžadují jednoduché uvozovky.
Zde je několik příkladů názvů sloupců, se kterými se můžete setkat v tabulce, a jak jsou reprezentovány ve vzorci:
| Název sloupce v databázi | Odkaz na sloupec ve vzorci |
|---|---|
| SimpleName | SimpleName |
| NameWith123Numbers | NameWith123Numbers |
| Název s mezerami | 'Name with spaces' |
| Název s dvojitými uvozovkami | 'Name with "double" quotes' |
| Název s jednoduchými uvozovkami | 'Name with ''single'' quotes' |
| Název se znakem @ at | 'Name with an @ at sign' |
Dvojité uvozovky se používají k označení textového řetězce.
Zobrazovaná jména a logická jména
Některé zdroje dat, například SharePoint a Microsoft Dataverse mají dva různé názvy, které odkazují na stejnou tabulku nebo sloupec dat:
Logický název – Název, který je zaručeně jedinečný, po vytvoření se nemění, obvykle nepovoluje mezery ani jiné speciální znaky a není lokalizován do různých jazyků. V důsledku toho může být název nesrozumitelný. Tyto názvy používají profesionální vývojáři. Například cra3a_customfield. Tento název může být také označován jako název schématu nebo prostě název.
Zobrazované jméno - Název, který je uživatelsky přívětivý a je určen pro konečné uživatele. Tento název nemusí být jedinečný, může se časem měnit, může obsahovat mezery a jakýkoli znak Unicode a může být lokalizován do různých jazyků. V souladu s výše uvedeným příkladem může být zobrazované jméno Vlastní pole s mezerou mezi slovy.
Vzhledem k tomu, že zobrazované názvy jsou srozumitelnější, aplikace plátna je navrhnou jako výběr a nenavrhují logická jména. Ačkoli logické názvy nejsou navrženy aplikací, lze je přesto použít, pokud jsou zadány nepřímo.
Představte si například, že jste přidali Vlastní pole do tabulky v Dataverse. Systém vám přiřadí logické jméno, které můžete upravit pouze při vytváření pole. Výsledek by vypadal podobně jako:
Při vytváření odkazu na pole Účtů bude návrh použít Vlastní pole, protože se jedná o zobrazované jméno. Je nutné použít jednoduché uvozovky, protože tento název má v sobě mezeru:
Po výběru návrhu se na liště vzorců zobrazí „Vlastní pole“ a data se načtou:
Ačkoli to není navrženo, mohli bychom pro toto pole použít také logický název. To povede k načtení stejných dat. Nejsou vyžadovány žádné uvozovky, protože tento název neobsahuje mezery ani speciální znaky:
Za scénami je udržováno mapování mezi zobrazovanými jmény ve vzorcích a základními logickými jmény. Protože k interakci se zdroji dat musí být použita logická jména, používá se toto mapování k automatickému převodu z aktuálního zobrazovaného jména na logické jméno a to je vidět v síťovém provozu. Toto mapování se také používá k převodu zpět na logická jména a přepnutí na nové zobrazované názvy, například pokud se zobrazované jméno změní nebo tvůrce v jiném jazyce upraví aplikaci.
Poznámka:
Při přesunu aplikace mezi prostředími nejsou logická jména přeložena. U názvů systémových tabulek a polí Dataverse by to neměl být problém, protože logické názvy jsou konzistentní napříč prostředími. Ale jakákoli vlastní pole, například cra3a_customfield v tomto příkladu výše může mít jinou předponu prostředí (cra3a v tomto případě). Zobrazované názvy jsou upřednostňovány, protože mohou být porovnány se zobrazovanými názvy v novém prostředí.
Mnohoznačnost názvu
Protože zobrazované názvy nejsou jedinečné, může se stejný zobrazovaný název objevit ve stejné tabulce více než jednou. Pokud k tomu dojde, bude logické jméno přidáno na konec zobrazovaného jména v závorce pro jedno z více konfliktních jmen. Na základě výše uvedeného příkladu, pokud existuje druhé pole se stejným zobrazovaným jménem Vlastního pole s logickým názvem cra3a_customfieldalt, návrh pak ukáže:
Řetězce pro rozlišení názvů jsou přidány v jiných situacích, kde se vyskytují název konflikty, jako například názvy tabulek, volby a jiné položky Dataverse.
Operátor mnohoznačnosti
Některé funkce vytvářejí při zpracovávání jednotlivých záznamů obory záznamů pro přístup k polím tabulky. Jedná se například o Filter, AddColumns a Sum. Názvy polí přidané prostřednictvím oboru záznamů přepíší stejné názvy v aplikaci pocházející odjinud. Pokud k tomu dojde, můžete k hodnotám mimo obor záznamů nadále přistupovat pomocí operátoru mnohoznačnosti @:
- Pro přístup k hodnotám z vnořených oborů záznamů použijte operátor @ s názvem tabulky, se kterou se pracuje, a to podle tohoto vzoru:
Tabulka[@NázevPole] - Pro přístup ke globálním hodnotám, jako jsou zdroje dat, kolekce a kontextové proměnné, použijte vzor [@NázevObjektu] (bez označení tabulky).
Další informace a příklady najdete v diskuzi o oborech záznamů.