Operatori și identificatori în Power Apps
Se aplică pentru: planșă de lucru apps Aplicații bazate pe model Power Pages
Unii dintre acești operatori depind de limba autorului. Pentru mai multe informații despre compatibilitatea lingvistică în aplicațiile pânză, consultați Aplicații globale.
Simbol | Tipul | Exemplu | Descriere |
---|---|---|---|
„...” | Identificator | „Numele contului” | Identificatorii care conțin caractere speciale, inclusiv spații, sunt încadrați între ghilimele simple |
„...” | Șir de text | "Salut Lume" | Șirurile de text sunt cuprinse între ghilimele duble |
$"..." | Interpolarea șirurilor | $"Dragă {FirstName}," | Formule încorporate într-un șir de text |
. | Selector de proprietate | Slider1.Value Color.Red Acceleration.X |
Extrage o proprietate dintr-un tabel, control, semnal sau enumerare. Pentru compatibilitate inversă, se poate, de asemenea, utiliza !. |
. [dependent de limbă] |
Separator zecimal | 1.23 | Separator între partea întreagă și partea fracționară a unui număr. Caracterul depinde de limbă. |
( ) | Paranteze | Filtru (T, A < 10) (1 + 2) * 3 |
Execută ordinea de precedență și grupează subexpresiile într-o expresie mai mare |
+ | Operatori aritmetici | 1 + 2 | Adunare |
- | 2 - 1 | Scădere și semn | |
* | 2*3 | Înmulțire | |
/ | 2/3 | Împărțire (a se vedea și funcția Mod) | |
^ | 2 ^ 3 | Ridicare la putere, echivalent cu funcția Power | |
% | 20% | Procent (echivalent cu „* 1/100") | |
= | Operatori de comparație | Preț = 100 | Egal cu |
> | Preț > 100 | Mai mare decât | |
>= | Preț >= 100 | Mai mare sau egal cu | |
< | Preț < 100 | Mai mic decât | |
<= | Preț <= 100 | Mai mic sau egal cu | |
<> | Preț <> 100 | Nu este egal cu | |
& | Operator de concatenare cu șiruri | „bună ziua” & " " & "lume" | Determină mai multe șiruri să pară continue |
&& sau Și | Operatori logici | Preț < 100 && Slider1.Value = 20 sau Preț < 100 And Slider1.Value = 20 |
Conjuncție logică, echivalentă cu funcția And |
|| sau Or | Preț < 100 || Slider1.Value = 20 sau Preț < 100 Sau Slider1.Value = 20 | Disjuncție logică, echivalentă cu funcția Or | |
! sau Not | !(Preț < 100) sau Nu (Preț < 100) | Negație logică, echivalentă cu funcția Not | |
exactin | Operatori de membru | Gallery1.Selectat exact în SavedItems | Aparțin unei colecții sau unui tabel |
exactin | „Windows” exact în „Pentru a afișa ferestre în sistemul de operare Windows...” | Test subșir (sensibil la litere mari și mici) | |
în | Gallery1.Selectat în SavedItems | Aparțin unei colecții sau unui tabel | |
în | „The” în „Tastatura și monitorul...” | Test subșir (insensibil la litere mari și mici) | |
@ | Operator de dezambiguizare | MyTable[@fieldname] | Dezambiguizare câmp |
@ | [@MyVariable] | Dezambiguizare globală | |
, [dependent de limbă] |
Separator de listă | Dacă ( X < 10, „Scăzut”, „Bine” ) { X: 12, Y: 32 } [ 1, 2, 3 ] |
Separă:
|
; [dependent de limbă] |
Înlănțuire de formule | Colectează (T, A); Navigați(S1, "") | Invocări separate de funcții în proprietățile comportamentului. Operatorul de înlănțuire depinde de limbă. |
Ca | Ca operator | AllCustomers Ca Client | Înlocuiește ThisItem și ThisRecord în galerii și în funcții ale domeniului de înregistrare. Ca este util pentru a oferi un nume mai bun, specific și este deosebit de important în scenariile imbricate. |
Sinele | Autooperator | Self.Fill | Acces la proprietățile controlului curent |
părinte | operator părinte | Părinte.Umplere | Acces la proprietățile unui container de control |
Acest articol | Operatorul ThisItem | ThisItem.FirstName | Acces la câmpurile unei galerii sau ale unui control de formular |
Această înregistrare | Operatorul ThisRecord | ThisRecord.FirstName | Acces la înregistrările complete și la câmpurile individuale ale înregistrării din interior ForAll, Sum, With și alte funcții ale domeniului de înregistrare. Poate fi anulat cu operatorul As. |
Notă
Operatorul @ poate fi, de asemenea, utilizat pentru a valida tipul obiectului de înregistrare împotriva unei surse de date. De exemplu, Collect(coll,Account@{'Account Number: 1111')
in și exactin
Utilizați operatorii in și exactin pentru a găsi un șir într-o sursă de date, cum ar fi o colecție sau un tabel importat. Operatorul in identifică potrivirile indiferent dacă sunt scrise cu litere mari sau mici, iar operatorul exactin identifică potrivirile numai utilizează în același mod majusculele și literele mici. Iată un exemplu:
Creați sau importați o colecție numită Inventar și afișați-o într-o galerie, conform descrierii din prima procedură din secțiunea Afișați imagini și text într-o galerie.
Setați proprietatea Items a galeriei la această formulă:
Filtru (Inventar, „E” în ProductName)Galeria afișează toate produsele, cu excepția lui Callisto, deoarece numele acelui produs este singurul care nu conține litera specificată.
Modificați proprietatea Items a galeriei la această formulă:
Filtru (Inventar, „E” exact în ProductName)Galeria afișează numai Europa, deoarece numai acest nume conține litera pe care ați specificat-o, scrisă cu mărimea specificată.
Operatori ThisItem, ThisRecord și Ca
Câteva controale și funcții aplică formule la înregistrările individuale ale unui tabel. Pentru a face referire la înregistrarea individuală într-o formulă, utilizați una dintre următoarele:
Operator | Se aplică la | Descriere |
---|---|---|
Acest articol | Galerie controla Editați formularul controla Afisare formular controla |
Numele implicit pentru înregistrarea curentă dintr-un control Galerie sau formular. |
Această înregistrare | PentruToate, Filtru, Cu, Suma și alte funcții ale domeniului de înregistrare | Numele implicit pentru înregistrarea curentă din ForAll și alte funcții ale domeniului de înregistrare. |
Canume | Galerie control PentruToate, Filtrare, Cu, Suma și alte funcții ale domeniului de înregistrare |
Definește un nume pentru înregistrarea curentă, înlocuind implicitul ThisItem sau ThisRecord. Utilizați As pentru a face formulele mai ușor de înțeles și de a rezolva ambiguitatea atunci când sunt imbricate. |
Operator ThisItem
De exemplu, în cele ce urmează controlul Galerie, proprietatea Elemente este setată la sursa de date Angajații (cum ar fi tabelul Angajați inclus cu Eșantion Northwind Traders):
Employees
Primul element din galerie este un șablon care este reprodus pentru fiecare angajat. În șablon formula pentru imagine utilizează ThisItem pentru a face referire la elementul curent:
ThisItem.Picture
De asemenea, formula pentru nume utilizează și ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
Operatorul ThisRecord
ThisRecord este folosit în funcțiile care au un acoperire de înregistrare. De exemplu, putem utiliza funcția Filter cu proprietatea Elemente a galeriei noastre pentru a afișa doar prenume care încep cu M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord este opțională și implicită prin utilizarea directă a câmpurilor, de exemplu, în acest caz, am fi putut scrie:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Deși opțională, utilizarea ThisRecord poate face formulele mai ușor de înțeles și pot fi necesare în situații ambigue în care un nume de câmp poate fi și un nume de relație. ThisRecord este opțional, în timp ce ThisItem este întotdeauna necesar.
Utilizați ThisRecord pentru a face referire la întreaga înregistrare cu Patch, Collect și alte funcții ale domeniului de înregistrare. De exemplu, următoarea formulă stabilește starea pentru toți angajații inactivi ca fiind activă:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Ca operator
Utilizați operatorul As pentru a numi o înregistrare într-o galerie sau funcția de aplicare a înregistrării, care trece peste valoarea implicită ThisItem sau ThisRecord. Denumirea înregistrării poate face formulele dvs. mai ușor de înțeles și poate fi necesar în situații imbricate pentru a accesa înregistrările din alte domenii.
De exemplu, puteți modifica proprietatea Elemente a galeriei noastre pentru a utiliza As pentru a identifica faptul că lucrăm cu un angajat:
Employees As Employee
Formulele pentru imagine și nume sunt ajustate pentru a utiliza acest nume pentru înregistrarea curentă:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As poate fi folosit și cu funcții de sfera de înregistrare pentru a înlocui numele implicit ThisRecord. Putem aplica acest lucru la exemplul nostru anterior pentru a clarifica înregistrarea cu care lucrăm:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Atunci când imbrică galerii și funcții de aplicare a înregistrării, ThisItem și ThisRecord se referă întotdeauna la domeniul de aplicare cel mai interior, lăsând înregistrările în scopuri exterioare nefiind disponibile. Utilizați As pentru a face disponibile toate scopurile înregistrării, dându-le fiecăruia un nume unic.
De exemplu, această formulă produce un model de tablă de șah ca șir de text prin imbricarea a două funcții 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
)
Setarea pentru un control Label a proprietății Text la această formulă afișează:
Haideți să dezarhivăm ce se întâmplă aici:
- Începem prin a itera un tabel fără nume cu 8 înregistrări numerotate din funcția Sequence. Această buclă este pentru fiecare rând al panoului, care este denumit în mod obișnuit Rang așa că îi dăm acest nume.
- Pentru fiecare rând, vom itera un alt tabel fără nume din 8 coloane și vom da numele comun Fişier.
- Dacă Rank.Value + File.Value este un număr impar, pătratul primește un X, altfel, un punct. Această parte a formulei face referire la ambele bucle ForAll, posibilă folosind operatorul As.
- Concat este folosit de două ori, mai întâi pentru a asambla coloanele și apoi rândurile, cu un Char(10) aruncat pentru a crea o nouă linie.
Un exemplu similar este posibil cu cel controale imbricate Gallery în loc de funcții ForAll. Să începem cu galeria verticală pentru Rang. Acest control de galerie va avea o formulă Elemente de:
Sequence(8) as Rank
În cadrul acestei galerii, vom plasa o galerie orizontală pentru Fişier, care va fi replicat pentru fiecare Rang, cu o proprietate Elemente:
Sequence(8) as File
Și în final, în cadrul acestei galerii, vom adăuga un control Label care va fi replicat pentru fiecare Fişier și fiecare Rang. Îl vom mări pentru a umple întregul spațiu și vom utiliza proprietatea Umplere pentru a oferi culoarea cu această formulă:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Operatori automați și principali
Există trei moduri de a face referire la un control și la proprietățile sale într-o formulă:
Metodă | Descriere |
---|---|
După nume de control | Orice control poate fi menționat după nume de oriunde din aplicație. De exemplu, Label1.Fill se referă la proprietatea de completare a controlului al cărui nume este Label1. |
Auto operator | Adesea se recomandă să faceți referire la o altă proprietate a aceluiași control atunci când scrieți o formulă. În loc să folosiți o referință absolută după nume, este mai ușor și mai convenabil să folosiți o referință relativă la una automată. Operatorul automat oferă acces la proprietățile controlului curent. De exemplu, Self.Fill se referă la culoarea de umplere a controlului curent. |
părinte operator | Unele controale găzduiesc alte controale, cum ar fi controalele Screen și Gallery. Controlul de găzduire al controalelor din cadrul acestuia se numește părinte. Asemenea operatorului Automat, operatorul Principal oferă o referință relativ ușoară la controlul containerului. De exemplu, Parent.Fill se referă la proprietatea de umplere a controlului care este containerul pentru controlul curent. |
Self și părinte sunt operatori și nu proprietăți ale controalelor în sine. Privind Parent.Parent, Self.Parent sau Parent.Self nu este acceptat.
Nume identificator
Numele variabilelor, ale surselor de date, coloanelor și altor obiecte pot conține orice caractere Unicode.
Utilizați ghilimele simple în jurul unui nume care conține un spațiu sau un alt caracter special.
Utilizați două ghilimele simple pentru a reprezenta un semn al citării individual în nume. Numele care nu conțin caractere speciale nu necesită ghilimele unice.
Iată câteva exemple de nume de coloană pe care le puteți întâlni într-un tabel și modul în care acestea sunt reprezentate într-o formulă:
Numele coloanei dintr-o bază de date | Referință la coloană într-o formulă |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Nume cu spații | 'Name with spaces' |
Nume cu ghilimele „duble” | 'Name with "double" quotes' |
Nume cu ghilimele 'simple' | 'Name with ''single'' quotes' |
Nume cu un semn at @ | 'Name with an @ at sign' |
Ghilimelele duble se utilizează pentru a desemna șiruri de text.
Nume afișate și nume logice
Unele surse de date, cum ar fi SharePoint și Microsoft Dataverse, au două nume diferite pentru același tabel sau coloană de date:
Nume logic - Un nume care este garantat a fi unic, nu se schimbă după ce a fost creat, de obicei nu permite spații sau alte caractere speciale și nu este localizat în diferite limbi. Drept urmare, numele poate fi criptic. Aceste nume sunt utilizate de dezvoltatorii profesioniști. De exemplu, cra3a_customfield. Acest nume poate fi, de asemenea, denumit nume de schemă sau pur și simplu nume.
Nume afișat - un nume ușor de utilizat și destinat să fie văzut de utilizatorii finali. Acest nume nu poate fi unic, se poate modifica în timp, poate conține spații și orice caracter Unicode și poate fi localizat în diferite limbi. Corespunzător exemplului de mai sus, numele afișajului poate fi Câmp particularizat cu spațiu între cuvinte.
Deoarece numele afișate sunt mai ușor de înțeles, aplicațiile proiectate pe pânză le vor recomanda ca opțiuni și nu vor propune nume logice. Deși nu sunt sugerate nume logice, ele pot fi utilizate în continuare, dacă sunt tastate indirect.
De exemplu, imaginați-vă că ați adăugat un Câmp personalizat la un tabel din Dataverse. Sistemul vă va atribui un nume logic, pe care îl puteți modifica numai atunci când creați câmpul. Rezultatul este similar cu:
Atunci când autorizați o referință la un câmp de conturi, se va recomanda utilizarea 'Câmp personalizat', deoarece acesta este numele afișat. Trebuie folosite ghilimele simple, deoarece acest nume are un spațiu:
După selectarea sugestiei, 'Câmp personalizat' este afișat în bara de formule și datele sunt preluate:
Deși nu este sugerat, am putea utiliza și numele logic pentru acest câmp. Aceasta va duce la regăsirea acelorași date. Ghilimele simple nu sunt necesare deoarece acest nume nu conține spații sau caractere speciale:
În fundal, se menține o corespondență între numele afișate din formule și numele logice subiacente. Deoarece numele logice trebuie utilizate pentru a interacționa cu sursa de date, această corespondență este utilizată pentru conversia automată de la numele afișat curent la numele logic, iar aceasta se observă în traficul de rețea. Această mapare este de asemenea folosită pentru a converti în nume logice pentru a schimba nume de afișare noi, de exemplu, dacă se schimbă un nume afișat sau un producător într-o altă limbă editează aplicația.
Notă
Numele logice nu se traduc la mutarea unei aplicații între medii. Pentru numele tabelelor și câmpurilor de sistem Dataverse, aceasta nu ar trebui să fie o problemă, deoarece numele logice sunt coerente între medii. Dar orice câmpuri personalizate, cum ar fi cra3a_customfield din acest exemplu de mai sus, pot avea un prefix de mediu diferit (cra3a în acest caz). Numele afișate sunt preferate, deoarece pot fi corelate cu numele afișate din noul mediu.
Dezambiguizarea numelor
Întrucât numele afișate nu sunt unice, același nume afișat poate apărea de mai multe ori în același tabel. Când se întâmplă acest lucru, numele logic va fi adăugat la sfârșitul numelui afișat în paranteze pentru unul sau mai multe nume aflate în conflict. Pe baza exemplului de mai sus, dacă ar fi existat un al doilea câmp cu același nume afișat Câmp personalizat, cu un nume logic cra3a_customfieldalt, sugestiile vor arăta astfel:
Șirurile de dezambiguizare a numelui sunt adăugate în alte situații în care apar conflicte de nume, cum ar fi numele tabelului, opțiunile și alte elemente Dataverse.
Operator de dezambiguizare
Unele funcții creează domenii de aplicare a înregistrărilor pentru accesarea câmpurilor tabelului în timpul procesării fiecărei înregistrări, cum ar fi Filter, AddColumns și Sum. Numele de câmp adăugate cu domeniul de aplicare a înregistrării înlocuiesc aceleași nume din alte părți ale aplicației. În această situație, puteți accesa în continuare valori din afara domeniului de aplicare a înregistrării cu ajutorul operatorului de dezambiguizare @:
- Pentru a accesa valori din domenii de aplicare a înregistrării imbricate, utilizați butonul operator @ cu numele tabelului care este operat la utilizarea acestui model:
Tabel[@FieldName] - Pentru a accesa valori globale, cum ar fi sursele de date, colecțiile și variabilele de context, utilizați modelul [@ObjectName] (fără denumire de tabel).
Pentru mai multe informații și exemple, consultați domeniile de aplicare a înregistrărilor.