Operadors i identificadors al Power Apps

S'aplica a: Aplicacions del llenç Aplicacions basades en models

Alguns d'aquests operadors depenen de la llengua de l'autor. Per obtenir més informació sobre la compatibilitat de llengua a les aplicacions de llenç, vegeu Aplicacions globals.

Símbol Type Exemple Descripció
'...' Identificador 'Nom del compte' Els identificadors que contenen caràcters especials, inclosos els espais, s'inclouen entre cometes simples
"..." Cadena de text "Hola món" Les cadenes de text s'escriuen entre cometes dobles
$"..." Interpolació de cadenes $"Dear {FirstName}," Fórmules incrustades dins d'una cadena de text
. Selector de propietats Slider1.Value
Color.Red
Acceleration.X
Extreu una propietat d'una taula, d'un control, d'un senyal o d'una enumeració. Per a la compatibilitat amb versions anteriors, es pot utilitzar també !.
.
[depèn de la llengua]
Separador decimal 1.23 Separador entre nombres sencers i fraccionats d'un nombre. El caràcter depèn de la llengua.
( ) Parèntesis Filter(T, A < 10)

(1 + 2) * 3
Aplica l'ordre de prioritat i agrupa 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" & " " & "Món" Fa que diverses cadenes apareguin contínues
&& o i Operadors lògics Preu < 100 && Control lliscant1.Valor = 20
o Preu < 100 And Slider1.Value = 20
Conjunció lògica, equivalent a la funció And
|| o Or   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 Not (Preu < 100) Negació lògica, equivalent a la funció Not
exactin Operadors de pertinença Gallery1.Selected exactin SavedItems Pertinença a una col·lecció o a una taula
exactin   Windows exactin "Per mostrar finestres al sistema operatiu Windows..." Prova de subcadena (distingeix entre majúscules i minúscules)
a   Gallery1.Selected in SavedItems Pertinença a una col·lecció o a una taula
a   "El" a "El teclat i el monitor..." Prova de subcadena (no distingeix entre majúscules i minúscules)
@ Operador de desambiguació MyTable[@fieldname] Desambiguació de camp
@   [@MyVariable] Desambiguació global
,
[depèn de la llengua]
Separador de llista If( X < 10, "Baix", "Bé" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Separa:
  • arguments de trucades de funció
  • camps d'un registre
  • registres d'una taula
Aquest caràcter depèn de la llengua.
;
[depèn de la llengua]
Encadenament de fórmules Collect(T, A); Navigate(S1, "") Separeu les invocacions de funcions en propietats de comportament. L'operador d'encadenament depèn de la llengua.
Com a Operador As AllCustomers As Client Substitueix ThisItem i ThisRecord en galeries i funcions d'àmbit de registre. Com a és útil per proporcionar un nom millor i específic i que tingui especial importància en escenaris incrustats.
Propi Operador Self Self.Fill Accés a les propietats del control actual
Parent Operador Parent Parent.Fill Accés a les propietats d'un contenidor de control
ThisItem Operador ThisItem ThisItem.FirstName Accés a camps d'un control de formulari o Galeria
ThisRecord Operador ThisRecord 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.

Nota

L'operador @ també es pot utilitzar per validar el tipus d'objecte de registre contra una font de dades. Per exemple, Collect(coll,Account@{'Account Number: 1111')

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:

  1. 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 .

  2. Definiu la propietat Items de la galeria a aquesta fórmula:
    Filter(Inventari, "E" in 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.

  3. Canvieu la propietat Items de la galeria a aquesta fórmula:
    Filter(Inventari, "E" exactin ProductName)

    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ó
ThisItem Control Gallery
Control Edita el formulari
Control Mostra el formulari
El nom per defecte del registre actual en un control Galeria o de formulari.
ThisRecord ForAll, Filter, With, Sum i altres funcions d'abast de registre El nom per defecte del registre actual a ForAll i altres funcions d'àmbit de registre.
Com a nom Control Gallery
ForAll, Filter, With, Sum i altres funcions d'abast de 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 Elements està definida com a font de dades Empleats (com ara la taula Empleats inclosa amb la mostra de Northwind Traders):

Employees

Els empleats es mostren en una galeria.

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

Fórmula per a la imatge d'un empleat.

De la mateixa manera, la fórmula del nom també utilitza ThisItem:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

Fórmula per al primer i cognom d'un empleat.

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" ) )

Filtrar els empleats en funció del nom, mitjançant ThisRecord.

ThisRecord és opcional i implica utilitzar 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 obligatori.

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

Galeria d'empleats, utilitzant l'operador AS.

Les fórmules de la imatge i el nom s'ajusten per utilitzar aquest nom per al registre actual:

Employee.Picture

Imatge d'un empleat utilitzant el nom de l'empleat definit amb l'operador As.

Employee.'First Name' & " " & Employee.'Last Name'

Primer i cognom d'un empleat que utilitza el nom de l'empleat definit amb l'operador As.

As també es pot utilitzar amb les funcions d'àmbit de registre per substituir ThisRecord del nom per defecte. 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:

El text del tauler d'escacs es mostra en un control d'etiqueta.

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, per les files, amb Char(10) que s'aplica per crear una línia nova.

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

Il·lustració de la galeria exterior que proporciona la iteració de rang.

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

Il·lustració de la galeria interior que proporciona la iteració del fitxer.

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 )

Control d'etiquetes dins de les dues galeries que proporciona els colors alterns per al tauler d'escacs.

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.
Operador Self 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 Parent 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 en els mateixos 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 està garantit que és únic, no canvia després de crear-se, normalment no permet espais ni altres caràcters especials i no està localitzat a diferents llengües. 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'entendre per l'usuari i que està pensat perquè el vegin els 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.

Com que els noms de visualització són més fàcils d'entendre, les aplicacions de llenç els suggeriran com a opcions i no suggeriran 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 taula 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:

Taula Comptes amb Camp personalitzat afegit, mostrant un nom de visualització de

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:

Barra de fórmules Studio que mostra suggeriments de noms de camps de comptes amb el nom de visualització

Després de seleccionar el suggeriment, es mostra 'Camp personalitzat' a la barra de fórmules i es recuperen les dades:

Barra de fórmules Studio que mostra l'ús del nom de visualització

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. Les cometes simples no són obligatòries, ja que aquest nom no conté espais ni caràcters especials:

Barra de fórmules Studio que mostra l'ús del nom lògic cr5e3_customfield per al camp.

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 taula i de camp del sistema del Dataverse, això no hauria de ser cap problema, ja que els noms lògics són coherents entre 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, pot ser que el mateix nom de visualització aparegui més d'una vegada a la mateixa taula. Quan això passa, el nom lògic s'afegirà al final del nom de visualització entre parèntesis en un o més dels noms conflictius. 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:

Barra de fórmules d'estudi que mostra l'ús del nom lògic cr5e3_customfieldalt per desambiguar les dues versions de

Les cadenes de desambiguació de noms s'afegeixen en altres situacions en què es produeixen conflictes de noms, com ara els noms de la taula, les eleccions 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[@NomDelCamp]
  • 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.