Operatorer och identifierare i Power Apps
Gäller för: Arbetsyteappar Modellbaserade appar Power Pages
En del av de här operatorerna är beroende av författarens språk. Mer information om språksupport i arbetsyteappar finns i Globala program.
Symbol | Typ | Exempel | Beskrivning |
---|---|---|---|
'..." | Identifierare | "Kontonamn" | Identifierare som innehåller specialtecken, inklusive blanksteg, omges av enkla offerter |
"..." | Textsträng | "Hej, världen" | Textsträngar omges av dubbla citattecken |
$"..." | Interpolation av strängar | $"Kära {FirstName}," | Formeln är inbäddad i en textsträng |
. | Egenskapsväljaren | Skjutreglaget1.Värde Color.Red Acceleration.X |
Extraherar en egenskap från en tabell, kontroll, signal eller uppräkning. För bakåtkompatibilitet kan ! också användas. |
. [språkberoende] |
Decimaltecken | 1.23 | Avgränsare mellan heltal och fraktioner av ett tal. Tecknet beror på språket. |
( ) | Parenteser | Filtrera (T, A < 10) (1 + 2) * 3 |
Framtvingar prioritetsordning och grupperar underuttryck i ett större uttryck |
+ | Aritmetiska operatorer | 1 + 2 | Tillägg |
- | 2 - 1 | Subtraktion och tecken | |
* | 2 * 3 | Multiplikation | |
/ | 2 / 3 | Division (Se även Mod-funktionen) | |
^ | 2 ^ 3 | Exponentiering som motsvarar Power-funktionen | |
% | 20 % | Procentsats (motsvarar "* 1/100") | |
= | Jämförelseoperatorer | Pris = 100 | Lika med |
> | Pris > 100 | Större än | |
>= | Pris >= 100 | Större än eller lika med | |
< | Pris < 100 | Mindre än | |
<= | Pris <= 100 | Mindre än eller lika med | |
<> | Pris <> 100 | Inte lika med | |
& | Operator för strängsammanfogning | "Hej" & " " & "Världen" | Får flera strängar att se sammanhängande ut |
&& eller Och | Logiska operatorer | Pris < 100 & Slider1.Värde = 20 eller Price < 100 And Slider1.Value = 20 |
Logisk konjunktion som motsvarar funktionen And |
|| eller Eller | Pris < 100 || Slider1.Value = 20 eller Pris < 100 eller Slider1.Value = 20 | Logisk disjunktion som motsvarar funktionen Or | |
! eller Not | ! (Pris < 100) eller inte (Pris < 100) | Logisk negation som motsvarar funktionen Not | |
Exakt | Operatörer av medlemskap | Galleri1.Valda exaktin SavedItems | Som tillhör en samling eller en tabell |
Exakt | "Windows" exactin "För att visa fönster i Windows-operativsystemet..." | Delsträngstest (skiftlägeskänsligt) | |
i | Galleri1.Vald i SavedItems | Som tillhör en samling eller en tabell | |
i | "The" i "Tangentbordet och bildskärmen..." | Delsträngstest (skiftlägesokänsligt) | |
@ | operatör för förgreningar | MyTable[@fieldname] | Fältdisambiguering |
@ | [@MyVariable] | Global disambiguering | |
, [språkberoende] |
Listavgränsare | If( x < 10, "Låg", "Bra") { X: 12, Y: 32 } [ 1, 2, 3 ] |
Avgränsar: Detta tecken beror på språket. |
; [språkberoende] |
Formellänkning | Samla (T, A); Navigera(S1, "") | Separata funktionsanrop i beteendeegenskaper. Länkningsoperatorn beror på språket. |
Som | Som operatör | AllaKunder som kund | Åsidosätter ThisItem och ThisRecord i galleri- och postomfattningsfuktioner. Som är användbart för att ge ett bättre, specifikt namn och är särskilt viktigt i kapslade scenarier. |
Själv | Självständig operatör | Självfyll | Ger åtkomst till egenskaperna för den aktuella kontrollen |
Förälder | Överordnad operatör | Överordnad.Fyll i | Åtkomst till egenskaperna för en kontrollcontainer |
Den här artikeln | ThisItem-operatör | ThisItem.FirstName | Åtkomst till fälten för ett galleri eller en Form-kontrollen |
Detta rekord | ThisRecord operatör | ThisRecord.FirstName (Förnamn) | Åtkomst till hela posten och enskilda fält i posten i ForAll, Sum, With och andra postomfattningsfunktioner. Kan åsidosättas med Som operatör. |
Kommentar
Operatorn @ kan även användas för att verifiera postobjektets typ mot en datakälla. Till exempel: Collect(coll,Account@{'Account Number: 1111')
operatorerna in och exactin
Använd operatörerna in och exactin för att hitta en sträng i en datakälla, som en samling eller en importerad tabell. In-operatorn identifierar matchningar oavsett skiftläge och exactin-operatorn identifierar bara matchningar om skiftläget är detsamma. Här är ett exempel:
Skapa eller importera en samling med namnet Lager och visa den i ett galleri, enligt beskrivningen i den första proceduren i Visa bilder och text i ett galleri.
Ställ in galleriets egenskap Items på följande formel:
Filter (Lager, "E" i ProductName)Galleriet visar alla produkter utom Callisto, eftersom namnet på den här produkten är den enda som inte innehåller den angivna bokstaven.
Ändra galleriets egenskap Items till den här formeln:
Filter (Lager, "E" exakt ProductName)Galleriet visar bara Europa, eftersom det bara är det namnet som innehåller bokstaven som du angav i det skiftläget du angav.
ThisItem, ThisRecord och Som operatörer
Några kontroller och funktioner använder formler för enskilda poster i en tabell. Använd något av följande om du vill referera till en enskild post i en formel:
Operator | Gäller för | Beskrivning |
---|---|---|
Den här artikeln | Kontroll av galleri Kontrollen Redigera formulär Kontroll för visningsformulär |
Standardnamnet för den aktuella posten i kontrollen Gallery eller Form. |
Detta rekord | ForAll, Filter, With, Sum och andra funktioner för postomfång | Standardnamnet för den aktuella posten i ForAll och andra postomfattningsfunktioner. |
Somnamn | Kontroll av galleri ForAll, Filter, With, Sum och andra funktioner för postomfång |
Definierar ett namn för den aktuella posten, vilket ersätter standardnamnet ThisItem eller ThisRecord. Använd Som för att göra formler lättare att förstå och åtgärda tvetydighet när du kapslar. |
ThisItem-operator
Till exempel i följande kontroll för Gallery anges egenskapen Items till datakällan Anställda (t.ex. tabellen Anställda som inkluderas med Northwind Traders exemplet):
Employees
Det första objektet i galleriet är en mall som replikeras för varje medarbetare. I mallen använder formeln för bilden ThisItem för att referera till det aktuella objektet:
ThisItem.Picture
På samma sätt använder formeln för namnet även ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
ThisRecord-operator
ThisRecord används i funktioner som har ett postomfång. Vi kan t.ex. använda funktionen Filter med galleriets egenskap Items för att endast visa förnamn som börjar på M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord är valfritt och underförstått genom att använda fälten direkt, till exempel, i det här fallet, kunde vi ha skrivit:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Även om det är valfritt kan användning av ThisRecord göra formler lättare att förstå och kan krävas i tvetydiga situationer där ett fältnamn också kan vara ett relationsnamn. ThisRecord är valfritt medan ThisItem alltid krävs.
Använd ThisRecord för att referera till hela posten med Patch, Collect och andra postomfattningsfunktioner. Följande formel anger till exempel statusen för alla inaktiva medarbetare till aktiv:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Som operator
Använd Som operator om du vill namnge en post i en galleri- eller postomfattningsfunktion och åsidosätta standardnamnet ThisItem eller ThisRecord. Att namnge posten kan göra dina formler lättare att förstå och kan krävas i kapslade situationer för att få tillgång till poster i andra omfattningar.
Du kan t.ex. ändra egenskapen Items i vårt galleri om du vill använda Som för att identifiera att vi arbetar med en medarbetare:
Employees As Employee
Formlerna för bilden och namnet justeras för att använda det här namnet för den aktuella posten:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
As kan också användas med postomfångsfunktioner för att ersätta standardnamnet ThisRecord. Vi kan använda det här exemplet för att förtydliga posten som vi arbetar med:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
När du kapslar in gallerier och postomfattningsfunktioner refererar ThisItem och ThisRecord alltid till den innersta omfattningen lämnar poster i yttre omfattningar otillgängliga. Använd Som för att tillgängliggöra alla postomfattningar genom att ge alla ett unikt namn.
Med den här formeln skapas till exempel ett schackmönster som en textsträng genom att kapsla två ForAll-funktioner:
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
)
Att ange en Label-kontrolls egenskap Text till denna formel visar:
Låt oss packa upp vad som händer här:
- Vi börjar med att iterera en namnlös tabell med åtta numrerade poster från funktionen Sequence. Denna loop gäller för varje rad på brädet, som vanligtvis kallas för rang, så vi ger den detta namn.
- För varje rad itererar vi en annan namnlös tabell med åtta kolumner, och vi ger det allmänna namnet Fil.
- Om Rank.Value + File.Value är ett udda tal, får fyrkanten ett X, annars en punkt. Den här delen av formeln refererar till båda ForAll-loopar, vilket möjliggörs genom att använda operatorn Som.
- Concat används två gånger, först för att sätta ihop kolumnerna och sedan raderna, med en Char(10) inkastad för att skapa en ny rad.
Ett liknande exempel är möjligt med kapslade Gallery-kontroller i stället för ForAll-funktioner. Vi börjar med det vertikala galleriet för Rang. Den här gallerikontrollen har följande objekt-formel:
Sequence(8) as Rank
I det här galleriet placerar vi ett horisontellt galleri för filen, som replikeras för varje rang, med en Itemsegenskap som är:
Sequence(8) as File
I det här galleriet lägger vi slutligen till en Label-kontroll som ska replikeras för varje fil och varje rang. Vi gör så att det fyller hela utrymmet och använder egenskapen Fill för att ange färgen med formeln:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Self- och Parent-operatorer
Det finns tre sätt att referera till en kontroll och dess egenskaper i en formel:
Metod | Beskrivning |
---|---|
Efter kontrollnamn | Du kan referera till alla kontroller med namn var som helst ifrån inom programmet. Exempel: Label1.Fill refererar till egenskapen Fill för den kontroll vars namn är Label1. |
Självständig operatör | Det är ofta praktiskt att referera till en annan egenskap i samma kontroll när du skriver en formel. I stället för att använda en absolut referens efter namn är det enklare och smidigare att använda en relativ referens till en self. Self-operator ger enkel åtkomst till den aktuella kontrollen. Till exempel refererar Self.Fill till den aktuella kontrollens fyllningsfärg. |
Överordnad operatör | Vissa kontroller är värdar för andra kontroller, t.ex. kontrollerna Screen och Gallery. Värdkontrollen för kontrollerna inom den kallas för överordnad. På samma sätt som Self-operator, ger Parent-operator en enkel relativ referens till Container-kontroll. Till exempel refererar Parent.Fill till egenskapen Fill i den kontroll som är behållare för den aktuella kontrollen.. |
Self och Parent är operatorer och inte egenskaper för själva kontrollerna. Referera till Parent.Parent, Self.Parent eller Parent.Self stöds inte.
Namn på identifierare
Namnen på variabler, datakällor, kolumner och andra objekt kan innehålla Unicode.
Använd enkla citattecken runt ett namn som innehåller blanksteg eller specialtecken.
Använd två enda citat tillsammans för att representera en enda offert i namnet. För namn som inte innehåller specialtecken krävs inga enskilda offerter.
Här är några exempel på kolumnnamn som kan uppstå i en tabell och hur de representeras i en formel:
Kolumnnamn i databas | Kolumnreferens i en formel |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Namn med blanksteg | 'Name with spaces' |
Namn med dubbla citattecken | 'Name with "double" quotes' |
Namn med enkla citattecken | 'Name with ''single'' quotes' |
Namn med @ at-tecken | 'Name with an @ at sign' |
Dubbla citattecken används för att Ange textsträngar.
Visningsnamn och logiska namn
Vissa datakällor, t.ex. SharePoint och Microsoft Dataverse har två olika namn som refererar till samma tabell eller datakolumn:
Logiskt namn – Ett namn som garanterat är unikt, som inte ändras efter att det har skapats, som vanligtvis inte tillåter mellanslag eller andra specialtecken och som inte är lokaliserat till olika språk. På grund av detta kan namnet vara kryptiskt. Dessa namn används av professionella utvecklare. Till exempel cra3a_customfield. Namnet kan också kallas schemanamn eller endast namn.
Visningsnamn – Ett namn som är användarvänligt och avsett att ses av slutanvändare. Det här namnet kanske inte är unikt, kan ändras över tid, kan innehålla blanksteg och eventuella Unicode-tecken och kan lokaliseras till olika språk. Motsvarande exemplet ovan kan visningsnamnet vara ett anpassat fält med blanksteg mellan orden.
Eftersom visningsnamn är lättare att förstå kan du välja om du vill att arbetsyteappar ska föreslå alternativ och inte föreslå logiska namn. Logiska namn föreslås inte, men de kan fortfarande användas om de typas indirekt.
Anta till exempel att du har lagt till ett anpassat fält i en tabell i Dataverse. Ett logiskt namn tilldelas av systemet som du endast kan ändra när du skapar fältet. Resultatet skulle se ut ungefär så här:
När du redigerar en referens till ett fält med konton kommer förslaget att användas som "anpassat fält", eftersom det är visningsnamnet. Enskilda offerter måste användas eftersom följande namn har ett blanksteg:
När du har valt förslaget visas "anpassat fält" i formelfältet och data hämtas:
Även om det inte föreslås kan vi också använda det logiska namnet för det här fältet. Detta resulterar i att samma data hämtas. Enskilda offerter krävs inte eftersom det här namnet inte innehåller blanksteg eller specialtecken:
I bakgrunden upprätthålls en mappning mellan de visningsnamn som visas i formler och de underliggande logiska namnen. Eftersom logiska namn måste användas för att interagera med datakällan används den här mappningen för att konvertera från det aktuella visningsnamnet till det logiska namnet automatiskt och det är det som visas i nätverkstrafiken. Mappningen används också för att konvertera tillbaka till logiska namn för att växla till nya visningsnamn, till exempel om ett visningsnamn ändras eller en tillverkare på ett annat språk redigerar programmet.
Kommentar
Logiska namn översätts inte när ett program flyttas mellan miljöer. För Dataverse systemtabell- och fältnamn bör detta inte vara några problem eftersom logiska namn är konsekventa i alla miljöer. Alla anpassade fält, t.ex. cra3a_customfield i det här exemplet ovan, kan dock ha olika miljöprefix (cra3a i det här fallet). Visningsnamn är lämpliga eftersom de kan matchas mot visningsnamn i den nya miljön.
Namndisambiguering
Eftersom visningsnamnen inte är unika kan samma visningsnamn visas mer än en gång i samma tabell. När detta inträffar läggs det logiska namnet till i slutet av visningsnamn inom parentes för ett av namnen som står i konflikt. Bygger på exemplet ovan, om det fanns ett andra fält med samma visningsnamn av anpassat fält med ett logiskt namn på cra3a_customfieldalt då visas förslagen:
Tvetydiga namnsträngar läggs till i andra situationer där namnkonflikter uppstår, till exempel namnen på tabell, alternativ och andra Dataverse objekt.
Disambigueringsoperator
Vissa funktioner skapar postområden för att få åtkomst till fälten i tabellen när posterna bearbetas, t.ex. Filter, AddColumns och Sum. Fältnamn som lagts till med postområdet åsidosätter samma namn från andra ställen i programmet. När det händer så kan du fortfarande komma åt värden från utanför omfattningsposten med disambigueringsoperatorn @:
- Om du vill komma åt värden från kapslade postområden använder du operatorn @ med namnet på den tabell som bearbetas, och med hjälp av följande mönster:
Tabell[@FieldName] - Om du vill komma åt globala värden, som datakällor, samlingar och kontextvariabler, använder du mönstret [@ObjectName] (utan tabellbeteckning).
Mer information och exempel finns i postomfång.