Operadors i identificadors
Nota
Microsoft Power Fx és el nom nou del llenguatge de formules de les aplicacions de llenç. Aquests articles són un treball en curs a mesura que extraiem el llenguatge de les aplicacions de llenç, l'integrem amb altres productes del Microsoft Power Platform i fem que estigui disponible com a codi obert. Comenceu amb la Informació general del Microsoft Power Fxper veure una introducció al llenguatge.
Els operadors del Microsoft Power Fx es descriuen a continuació. Alguns d'aquests operadors depenen de la llengua de l'autor. Vegeu Aplicacions globals per obtenir més informació.
Símbol | Type | Sintaxi | Descripció |
---|---|---|---|
. | Selector de propietats | Control lliscant1.Valor Color.Red |
Extreu una propietat d'un control de taula o d'una enumeració. Per a la compatibilitat amb versions anteriors, es pot utilitzar !. |
. Depèn de l'idioma |
Separador decimal | 1.23 | Separador entre nombres sencers i fraccionats d'un nombre. El caràcter depèn de la llengua. |
( ) | Parèntesis | Filtre (T, A < 10) (1 + 2) * 3 |
Imposa l'ordre de precedència i agrupa les subexpressions en una expressió més gran |
+ | Operadors aritmètics | 1 + 2 | Suma |
- | 2 - 1 | Resta i signe | |
* | 2 * 3 | Multiplicació | |
/ | 2 / 3 | Divisió (vegeu també la funció Mod) | |
^ | 2 ^ 3 | Exponenciació, equivalent a la funció Power | |
% | 20% | Percentatge (equivalent a "*1/100") | |
= | Operadors de comparació | Preu = 100 | Igual a |
> | Preu > 100 | Major que | |
>= | Preu >= 100 | Major o igual que | |
< | Preu < 100 | Menor que | |
<= | Preu <= 100 | Menor o igual que | |
<> | Preu <> 100 | No és igual que | |
& | Operador de concatenació de cadena | "hola" i "món" | Fa que diverses cadenes apareguin contínues |
&& o i | Operadors lògics | Preu < 100 & Slider1.Value = 20 o Preu < 100 And Slider1.Value = 20 |
Conjunció lògica, equivalent a la funció And |
|| o bé | Preu < 100 || Slider1.Value = 20 o Preu < 100 o Slider1.Value = 20 | Disjunció lògica, equivalent a la funció Or | |
! o Not | ! (preu < 100) o no (preu < 100) | Negació lògica, equivalent a la funció Not | |
exacta | Operadors de membres | Galeria1.Selected exactin SavedItems | Pertinença a una col·lecció o a una taula |
exacta | "Windows" exactament a "Per mostrar les finestres al sistema operatiu Windows..." | Prova de subcadena (distingeix entre majúscules i minúscules) | |
dins | Galeria1.Seleccionat a SavedItems | Pertinença a una col·lecció o a una taula | |
dins | "El" a "El teclat i el monitor..." | Prova de subcadena (no distingeix entre majúscules i minúscules) | |
@ | Operador de desambiguació | La meva taula[@fieldname] | Desambiguació de camp |
@ | [@MyVariable] | Desambiguació global | |
, [depèn de la llengua] |
Separador de llista | If(X < 10, "Baix", "Bo") { X: 12, Y: 32 } [ 1, 2, 3 ] |
Separa: Aquest caràcter depèn de la llengua. |
; [depèn de la llengua] |
Encadenament de fórmules | Recollir (T, A); Navega(S1, "") | Separeu les invocacions de funcions en propietats de comportament. L'operador d'encadenament depèn de la llengua. |
Com | Com a operador | Tots els clients com a client | Substitueix ThisItem i ThisRecord en galeries i funcions d'àmbit de registre. Com és útil per proporcionar un nom millor i específic i és especialment important en escenaris imbricats. |
Jo | Autooperador | Auto.Omple | Accés a les propietats del control actual |
Pare | Operador principal | Parent.Fill | Accés a les propietats d'un contenidor de control |
Aquest element | Operador ThisItem | ThisItem.FirstName | Accés a camps d'un control de formulari o Galeria |
Aquest registre | Operador ThisItem | ThisRecord.FirstName | Accediu al registre complet i als camps individuals del registre amb ForAll, Sum, With i altres funcions d'àmbit de registre. Es poden substituir per l'operador As. |
operadors in i exactin
Utilitzeu els operadors in i exactin per trobar una cadena en una font de dades, com ara una col·lecció o una taula importada. L'operador in identifica les coincidències independentment del cas, mentre que l'operador exactin identifica les coincidències només si coincideixen les majúscules. Aquest és un exemple:
Creeu o importeu una col·lecció anomenada Inventari i mostreu-la en una galeria, tal com es descriu al primer procediment de Mostrar imatges i text en una galeria .
Definiu la propietat Items de la galeria a aquesta fórmula:
Filtre(Inventari, "E" a ProductName)A la galeria es mostren tots els productes tret de Callisto, ja que el nom d'aquest producte és l'únic que no conté la lletra que heu especificat.
Canvieu la propietat Items de la galeria a aquesta fórmula:
Filtre(Inventari, "E" exacta al nom del producte)A la galeria només es mostra Europa, perquè només el seu nom conté la lletra que heu especificat en el format de majúscules que heu especificat.
Operadors ThisItem, ThisRecord i As
Alguns controls i funcions apliquen fórmules a registres individuals d'una taula. Per referir-vos al registre individual d'una fórmula, utilitzeu una de les opcions següents:
Operador | S'aplica a | Descripció |
---|---|---|
Aquest element | Control de galeria Control d'edició del formulari Control de visualització del formulari |
El nom per defecte del registre actual en un control Galeria o de formulari. |
Aquest registre | ForAll, Filtre, Amb, Suma i altres funcions de l'abast del registre | El nom per defecte del registre actual a ForAll i altres funcions d'àmbit de registre. |
Com anom | Control de galeria ForAll, Filtre, Amb, Suma i altres funcions de l'abast del registre |
Defineix un nom per al registre actual, on substitueix ThisItem o ThisRecord per defecte. Utilitzeu As per fer que les fórmules siguin més fàcils d'entendre i resoldre l'ambigüitat en incrustar. |
Operador ThisItem
Per exemple, al control Galeria següent, la propietat Items està definida com a font de dades Empleats (per exemple, com l'entitat Empleats que s'inclou amb la mostra de Northwind Traders):
Employees
El primer element de la galeria és una plantilla replicada per a cada empleat. A la plantilla, la fórmula de la imatge utilitza ThisItem per referir-se a l'element actual:
ThisItem.Picture
De la mateixa manera, la fórmula del nom també utilitza ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
Operador ThisRecord
ThisRecord s'utilitza en funcions que tenen un àmbit de registre. Per exemple, podem utilitzar la funció Filter amb la propietat Items de la galeria per mostrar només els noms que comencen per M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord és opcional i implícit utilitzant els camps directament, per exemple, en aquest cas, podríem haver escrit:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Tot i que és opcional, l'ús de ThisRecord pot fer que les fórmules siguin més fàcils d'entendre i pot ser necessari en situacions ambigües on un nom de camp també pot ser un nom de relació. ThisRecord és opcional mentre que ThisItem sempre és necessari.
Utilitzeu ThisRecord per fer referència a tot el registre amb Patch, Collect i altres funcions d'àmbit de registre. Per exemple, la fórmula següent defineix l'estat de tots els empleats inactius com a actiu:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Operador As
Utilitzeu l'operador As per anomenar un registre d'una funció d'àmbit de registre o galeria, que substituirà ThisItem o ThisRecord per defecte. Anomenar el registre pot fer que les fórmules siguin més fàcils d'entendre i pot ser necessari en situacions incrustades per accedir als registres d'altres àmbits.
Per exemple, podeu modificar la propietat Items de la galeria per utilitzar As per tal d'identificar que treballem amb un empleat:
Employees As Employee
Les fórmules de la imatge i el nom s'ajusten per utilitzar aquest nom per al registre actual:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As també es pot utilitzar amb funcions d'abast de registre per substituir el nom per defecte ThisRecord. Ho podem aplicar a l'exemple anterior per aclarir el registre amb el qual treballem:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
En incrustar galeries i funcions d'àmbit de registre, ThisItem i ThisRecord sempre fan referència a l'àmbit més intern, de manera que els registres dels àmbits externs no estan disponibles. Utilitzeu As per fer que tots els àmbits de registre estiguin disponibles. Per fer-ho, assigneu a cada àmbit un nom únic.
Per exemple, aquesta fórmula produeix un patró de tauler d'escacs com a cadena de text mitjançant la incrustació de dues funcions 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
)
Si definiu la propietat Text d'un control Etiqueta amb aquesta fórmula, es mostrarà el següent:
Vegem què passa aquí:
- Per començar, iterem una taula sense nom de 8 registres numerats a partir de la funció Sequence. Aquest bucle és per a cada fila del tauler, que es coneix habitualment com a Classificació i, per tant, li donem aquest nom.
- Per a cada fila, s'iterarà una altra taula sense nom de 8 columnes i hi donem el nom comú Fitxer.
- Si Rank.Value + File.Value és un valor senar, el quadrat obté una X; si no ho és, obté un punt. Aquesta part de la fórmula fa referència a tots dos bucles de ForAll, els quals són possibles mitjançant l'ús de l'operador As.
- Concat s'utilitza dues vegades, primer per muntar les columnes i després les files, amb un Char(10) llançat per crear una nova línia.
Un exemple semblant és possible amb controls Galeria incrustats en comptes de funcions ForAll. Comencem amb la galeria vertical per a la Classificació. Aquest control Galeria tindrà una fórmula Items:
Sequence(8) as Rank
Dins d'aquesta galeria, col·locarem una galeria horitzontal per a Fitxer, que es replicarà per a cada Classificació amb una propietat Items de:
Sequence(8) as File
I, finalment, dins d'aquesta galeria, afegirem un control Etiqueta que es replicarà per a cada Fitxer i cada Classificació. En canviarem la mida per omplir tot l'espai i utilitzarem la propietat Fill per proporcionar el color amb aquesta fórmula:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Operadors Self i Parent
Hi ha tres maneres de referir-se a un control i a les seves propietats dins d'una fórmula:
Mètode | Descripció |
---|---|
Per nom del control | Es pot fer referència a qualsevol dels controls pel nom des de qualsevol part de l'aplicació. Per exemple, Label1.Fill fa referència a la propietat d'emplenament del control amb el nom Label1. |
Autooperador | Sovint és pràctic referir-se a una altra propietat del mateix control en escriure una fórmula. En lloc d'utilitzar una referència absoluta pel nom, és més fàcil i més portàtil utilitzar una referència relativa a un mateix. L'operador Self proporciona aquest accés fàcil al control actual. Per exemple, Self.Fill fa referència al color d'emplenament del control actual. |
Operador principal | Alguns controls contenen altres controls, com ara els controls Pantalla i Galeria. El control que conté els controls de l'interior s'anomena principal. Igual que l'operador Self, l'operador Parent proporciona una referència relativa fàcil al control contenidor. Per exemple, Parent.Fill fa referència a la propietat d'emplenament del control que és el contenidor per al control actual. |
Self i Parent són operadors i no propietats dels controls. Referir-se a Parent.Parent, Self.Parent o Parent.Self no està admès.
Noms d'identificador
Els noms de les variables, fonts de dades, columnes i altres objectes poden contenir qualsevol caràcter Unicode.
Utilitzeu cometes simples al voltant d'un nom que inclogui un espai o un altre caràcter especial.
Utilitzeu dues cometes simples per representar una sola cometa al nom. Els noms que no continguin caràcters especials no necessiten cometes simples.
A continuació, trobareu alguns noms de columna d'exemple que podeu trobar en una taula i com es representen en una fórmula:
Nom de la columna en una base de dades | Referència de la columna en una fórmula |
---|---|
NomSimple | SimpleName |
NomAmb123Nombres | NameWith123Numbers |
Nom amb espais | 'Name with spaces' |
Nom amb cometes "dobles" | 'Name with "double" quotes' |
Nom amb cometes 'simples' | 'Name with ''single'' quotes' |
Nom amb una arrova (@) | 'Name with an @ at sign' |
Les cometes dobles s'utilitzen per designar cadenes de text.
Noms de visualització i noms lògics
Algunes fonts de dades, com ara el SharePoint i el Microsoft Dataverse, tenen dos noms diferents per referir-se a la mateixa taula o columna de dades:
Nom lògic: un nom que es garanteix que és únic, no canvia després de ser creat, normalment no permet espais ni altres caràcters especials i no es localitza en diferents idiomes. Com a resultat, el nom pot ser críptic. Els desenvolupadors professionals utilitzen aquests noms. Per exemple, cra3a_customfield. També es pot fer referència a aquest nom com a nom d'esquema o nom.
Nom de visualització: un nom fàcil d'utilitzar i pensat per ser vist pels usuaris finals. Pot ser que el nom no sigui únic, pot canviar amb el temps, pot contenir espais i qualsevol caràcter Unicode i pot estar localitzat a diferents llengües. Corresponent a l'exemple anterior, el nom de visualització pot ser Camp personalitzat amb un espai entre les paraules.
Atès que els noms de visualització són més fàcils d'entendre, el Power Fx els suggerirà com a opcions i no suggerirà noms lògics. Tot i que els noms lògics no se suggereixen, encara es poden utilitzar si s'escriuen de manera indirecta.
Per exemple, imagineu que heu afegit un Camp personalitzat a una entitat del Dataverse. El sistema assignarà en lloc vostre el nom lògic, que podeu modificar només en crear el camp. El resultat tindria un aspecte semblant al següent:
Quan es crea una referència a un camp de Comptes, es suggerirà utilitzar 'Camp personalitzat', ja que aquest és el nom de visualització. S'han d'utilitzar les cometes simples perquè aquest nom té un espai:
Després de seleccionar el suggeriment, es mostra 'Camp personalitzat' a la barra de fórmules i es recuperen les dades:
Tot i que no se suggereix, també podríem utilitzar el nom lògic per a aquest camp. Això resultarà en la recuperació de les mateixes dades. No es necessiten cometes simples perquè aquest nom no conté espais ni caràcters especials:
En segon pla, es manté una assignació entre els noms de visualització de les fórmules i els noms lògics subjacents. Com que els noms lògics s'han d'utilitzar per interactuar amb la font de dades, aquesta assignació s'utilitza per convertir el nom de visualització actual al nom lògic de manera automàtica i això és el que es veu al tràfic de xarxa. Aquesta assignació també s'utilitza per tornar a convertir als noms lògics per canviar els noms de visualització nous; per exemple, si un nom de visualització canvia o un creador d'una altra llengua edita l'aplicació.
Nota
Els noms lògics no es tradueixen en desplaçar una aplicació entre entorns. Per als noms de camps i entitats del sistema del Dataverse, no hauria de ser un problema, ja que els noms lògics són coherents per a tots els entorns. Però alguns camps personalitzats, com ara cra3a_customfield de l'exemple anterior, poden tenir un prefix de l'entorn diferent (cra3a en aquest cas). Es prefereix l'ús dels noms de visualització, ja que poden coincidir amb els noms de visualització de l'entorn nou.
Desambiguació de noms
Com que els noms de visualització no són únics, el mateix nom de visualització pot aparèixer més d'una vegada a la mateixa entitat. Quan això succeeixi, el nom lògic s'afegirà al final del nom de visualització entre parèntesis per a un o més dels noms en conflicte. En l'exemple anterior, si hi hagués un segon camp amb el mateix nom de visualització del Camp personalitzat amb un nom lògic cra3a_customfieldalt, els suggeriments que es mostrarien són:
Les cadenes de desambiguació de noms s'afegeixen en altres situacions en què es produeixen conflictes de noms, com ara el nom d'entitats, conjunts d'opcions i altres elements del Dataverse.
Operador de desambiguació
Algunes funcions creen àmbits de registre per accedir als camps de la taula mentre processen cada registre, com ara Filter, AddColumns i Sum. Els noms de camp afegits amb l'àmbit de registre substitueixen els mateixos noms d'altres ubicacions de l'aplicació. Quan això succeeix, encara podeu accedir a valors fora de l'àmbit de registre amb l'operador de desambiguació @:
- Per accedir als valors dels àmbits de registre incrustats, utilitzeu l'operador @ amb el nom de la taula que s'utilitza mitjançant aquest patró:
Taula[@FieldName] - Per accedir a valors globals, com ara fonts de dades, col·leccions i variables de context, utilitzeu el patró [@NomObjecte] (sense cap designació de taula).
Per obtenir més informació i exemples, vegeu Àmbits de registre.