Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Bemærk!
Microsoft Power Fx er det nye navn til formelsproget i lærredapps. Disse artikler er i gang, da Microsoft udtrækker sproget fra lærredsapps, integrerer det med andre Microsoft Power Platform produkter og gør det tilgængeligt som åben kildekode. Start med oversigten over Microsoft Power Fx for at få en introduktion til sproget.
Få mere at vide om, hvordan Power Fx-variabler adskiller sig fra variabler i værktøjer, f.eks. Visual Basic eller JavaScript, og når formler er et bedre valg. I denne artikel forklares det, hvordan du vælger globale variabler, kontekstvariabler eller samlinger for at administrere appværdier og -tilstand.
I andre værktøjer kan du eksplicit udføre en beregning og gemme resultatet i en variabel. Men både Power Fx og Excel genberegner automatisk formler, når inputdataene ændres, så du har som regel ikke brug for at oprette og opdatere variabler. Ved at bruge denne fremgangsmåde kan du, når det er muligt, nemmere oprette, forstå og vedligeholde din app.
I nogle tilfælde skal du bruge variabler i Power Fx. Power Fx udvider Excel model ved at tilføje formler for funktionsmåde. Disse formler køres, f.eks. når en bruger vælger en knap. I en formel for funktionsmåde er det ofte nyttigt at angive en variabel, der skal bruges i andre formler.
Generelt skal du undgå at bruge variabler. Men nogle gange kan kun en variabel muliggøre den ønskede oplevelse. Du opretter implicit og skriver variabler, når de vises i funktioner, der angiver deres værdier.
Overfør Excel til Power Fx
Excel
Lad os gennemgå, hvordan Excel fungerer. En celle kan indeholde en værdi som et tal eller en streng eller en formel, der er baseret på værdierne i andre celler. Når brugeren indtaster en anden værdi i en celle, genberegner Excel automatisk formler, der afhænger af den nye værdi. Du skal ikke programmere noget for at muliggøre denne funktionsmåde.
I følgende eksempel er celle A3 angivet til formlen A1 + A2. Hvis A1 eller A2 bliver ændret, genberegnes A3 automatisk for at afspejle ændringen. Denne funktionsmåde kræver, at der ikke kodes uden for selve formlen.
Excel bruger ikke variabler. Værdien i en celle, der indeholder en formel, ændres på baggrund af inputtet, men der er ingen metode til at huske resultatet af en formel og gemme det i en celle eller andre steder. Hvis du ændrer en celles værdi, ændres hele regnearket muligvis, og eventuelle tidligere beregnede værdier går tabt. En Excel-bruger kan kopiere og indsætte celler, men det er under brugerens manuelle kontrol og er ikke muligt med formler.
Power Fx
Logik, som du opretter i Power Fx, opfører sig stort set som Excel. Du kan tilføje kontrolelementer i stedet for at opdatere celler, hvor du vil på en skærm, og navngive dem til brug i formler.
I Power Apps kan du f.eks. gengive Excel-adfærd i en app ved at tilføje et kontrolelement af typen Label med navnet Label1 og to kontrolelementer af typen Text input med navnet TextInput1 og TextInput2. Hvis du derefter angiver egenskaben Text for Label1 til TextInput1.Text + TextInput2.Text, viser den altid summen af de tal, der er i TextInput1 og TextInput2 automatisk.
Bemærk, at kontrolelementet Label1 er markeret og viser sin formel Text på formellinjen øverst på skærmen. Her finder du formlen TextInput1.Text + TextInput2.Text. Denne formel opretter en afhængighed mellem disse kontrolelementer, ligesom der oprettes afhængigheder mellem cellerne i en Excel-projektmappe. Lad os ændre værdien af TextInput1:
Formlen for Label1 genberegnes automatisk og viser den nye værdi.
I Power Fx kan du bruge formler til at bestemme ikke kun den primære værdi for et kontrolelement, men også egenskaber som f.eks. formatering. I det næste eksempel viser en formel for egenskaben Color for etiketten automatisk negative værdier med rødt. Funktionen If minder om den fra Excel:
If( Value(Label1.Text) < 0, Color.Red, Color.Black )
Du kan bruge formler til en lang række scenarier:
- Du kan for eksempel bruge enhedens GPS, et kortkontrolelement kan vise din aktuelle placering med en formel, der bruger Location.Latitude og Location.Longitude. Når du flytter, sporer kortet automatisk din placering.
- Andre brugere kan opdatere datakilder. For eksempel kan andre i teamet opdatere elementer på en SharePoint-liste. Når du opdaterer en datakilde, genberegnes eventuelle afhængige formler automatisk for at afspejle de opdaterede data. Ud over eksemplet kan du angive et galleris egenskab Items til formlen Filter( SharePointList ), som automatisk viser det nyligt filtrerede sæt poster.
Fordele ved Power Fx-formler
Brug af formler til at bygge apps giver mange fordele:
- Hvis du kender Excel, kender du Power Fx. Model- og formelsproget er det samme.
- Hvis du bruger andre programmeringsværktøjer, skal du overveje, hvor meget kode du skal bruge for at opnå disse eksempler. I Visual Basic ville du skulle skrive en hændelseshandler for ændringshændelsen på hvert kontrolelement af typen tekstinput. Den kode, der skal bruges til at udføre beregningen i hver af disse hændelseshandlere, er redundant og kan komme ud af synkronisering, eller du skal skrive en almindelig subrutine. I Power Fx kan du udføre alt dette arbejde med en enkelt formel på én linje.
- Hvis du vil vide, hvor Label1s tekst kommer fra, ved du præcis, hvor du skal kigge: formlen i egenskaben Text . Der er ingen anden måde til at påvirke teksten i dette kontrolelement. I et traditionelt programmeringsværktøj kunne en hændelseshandler eller en subrutine ændre værdien af etiketten fra et vilkårligt sted i programmet. Denne fremgangsmåde kan gøre det svært at spore, hvornår og hvor en variabel blev ændret.
- Hvis brugeren ændrer et skyderobjekt, og derefter skifter mening, kan brugeren ændre skyderen tilbage til den oprindelige værdi. Det er, som om intet nogensinde er ændret: Appen viser de samme kontrolværdier, som den gjorde før. Ligesom i Excel er der ingen konsekvenser ved eksperimentere og spørge "Hvad nu hvis".
Hvis du generelt kan opnå en effekt ved hjælp af en formel, er det bedre for dig. Lad formelmaskinen i Power Fx gøre arbejdet for dig.
Vær klar over, hvornår variabler skal bruges
Lad os ændre vores simple regnemaskine til at fungere som en gammeldags adderingsmaskine med en løbende total. Hvis du vælger knappen Tilføj , føjer du et tal til den løbende total. Hvis du vælger knappen Ryd , nulstiller du den løbende total til nul.
| Skærm | Beskrivelse |
|---|---|
|
Når appen starter, er den løbende total 0. Den røde prik repræsenterer brugerens finger i feltet for tekstinput, hvor brugeren skriver 77. |
|
Brugeren vælger knappen Læg til. |
|
77 føjes til den løbende total. Brugeren vælger knappen Læg til igen. |
|
77 bliver igen føjet til den løbende total, hvilket resulterer i 154. Brugeren vælger knappen Ryd. |
|
Den løbende total nulstilles til 0. |
Vores regnemaskine bruger noget, der ikke findes i Excel: en knap. I denne app kan du ikke kun bruge formler til at beregne den løbende total, da dens værdi afhænger af en række handlinger, som brugeren udfører. Du skal i stedet registrere og opdatere den løbende total manuelt. De fleste programmeringsværktøjer opbevarer disse oplysninger i en variabel.
Du skal nogle gange bruge en variabel til at få din app til at fungere på den ønskede måde. Men der følger advarsler med fremgangsmåden:
- Du skal opdatere den løbende total manuelt. Automatisk genberegning vil ikke klare arbejdet for dig.
- Du kan ikke beregne den løbende total baseret på værdierne i andre kontrolelementer. Den afhænger af, hvordan mange gange brugeren valgte knappen Læg til, og hvilken værdi der var i kontrolelementet af typen Tekstinput hver gang. Indtastede brugeren 77 og valgte Læg til to gange, eller angav brugeren 24 og 130 for hver af tilføjelserne? Du kan ikke se forskel, når totalen når 154.
- Ændringer i den samlede total kan stamme fra forskellige stier. I dette eksempel kan både knappen Læg til og Ryd opdatere den samlede total. Hvis appen ikke fungerer som forventet, hvilken knap er så årsag til problemet?
Bruge en global variabel
Hvis du vil oprette din regnemaskine, skal du bruge en variabel til at holde den løbende total. De enkleste variabler at arbejde med i Power Fx er globale variabler.
Sådan fungerer globale variabler:
- Brug funktionen Set til at angive værdien af den globale variabel. Set ( MyVar, 1 ) angiver den globale variabel MyVar til en værdi på 1.
- Brug den globale variabel ved at referere til det navn, du brugte sammen med funktionen Set . I dette tilfælde returnerer MyVar1.
- Globale variabler kan indeholde andre værdier, herunder strenge, tal, poster og tabeller.
Lad os bygge regnemaskinen igen ved hjælp af en global variabel:
Tilføj et kontrolelement af typen tekstinput med navnet TextInput1 og to knapper med navnet Button1 og Button2.
Angiv egenskaben Text for Button1 til "Læg til", og angiv egenskaben Text for Button2 til "Ryd".
Opdater den løbende total, når en bruger vælger knappen Læg til ved at angive dens egenskab OnSelect til denne formel:
Set( RunningTotal, RunningTotal + TextInput1.Text )
Tilstedeværelsen af denne formel medfører oprettelse af RunningTotal som en global variabel, der indeholder et tal, på grund af operatoren +. Du kan referere til RunningTotal overalt i appen. Når brugeren åbner denne app, har RunningTotal startværdien tom.
Første gang en bruger vælger knappen Læg til, og Set køres, indstilles RunningTotal til værdien RunningTotal + TextInput1.
Hvis du vil angive den løbende total til 0, når brugeren vælger knappen Ryd, skal du angive dens egenskab OnSelect til denne formel:
Set( RunningTotal, 0 )
Tilføj et kontrolelement af typen Label, og angiv dets egenskab Text til RunningTotal.
Denne formel genberegnes automatisk og viser brugeren værdien af RunningTotal , efterhånden som den ændres baseret på de knapper, som brugeren vælger.
Få vist et eksempel på appen, og du har din regnemaskine som beskrevet tidligere. Indtast et tal i tekstfeltet, og tryk et par gange på knappen Læg til. Når du er klar, skal du vende tilbage til oprettelsesoplevelsen ved hjælp af esc-tasten.
Hvis du vil se den globale variabels værdi, skal du vælge menuen Filer og vælge Variabler i venstre rude.
Hvis du vil vise alle steder, hvor variablen er defineret og bruges, skal du vælge den.
Typer af variabler
Power Fx indeholder to typer variabler:
| Variabel type | Område | Beskrivelse | Funktioner, der opretter |
|---|---|---|---|
| Globale variabler | App | Nemmest at bruge. Indeholder et tal, en tekststreng, boolesk værdi, post, tabel med mere. Du kan referere til den overalt i appen. | Set |
| Samlinger | App | Indeholder en tabel, som du kan referere til overalt i appen. Du kan ændre indholdet af tabellen i stedet for at angive den som en helhed. Du kan gemme den på den lokale enhed til senere brug. |
Collect ClearCollect |
Når du bruger Power Apps, får du vist en tredje variabeltype:
| Variabel type | Område | Beskrivelse | Funktioner, der opretter |
|---|---|---|---|
| Kontekstvariabler | Skærm | God til at sende værdier til et skærmbillede, ligesom parametre for en procedure på andre sprog. Du kan kun referere til den fra én skærm. |
UpdateContext Navigate |
Oprette og fjerne variabler
Du opretter alle variabler implicit, når de vises i funktionen Set, UpdateContext, Navigate, Collect eller ClearCollect . Hvis du vil deklarere en variabel og dens type, skal du blot inkludere den i en af disse funktioner overalt i din app. Ingen af disse funktioner opretter variabler. De udfylder kun variabler med værdier. Du kan aldrig angive variabler eksplicit, som du måske kan i et andet programmeringsværktøj, og al indtastning er implicit i brugen.
Du kan f.eks. have et knapkontrolelement med en OnSelect-formel, der er lig med Set( X, 1 ). Denne formel opretter X som en variabel med en type af tal. Du kan bruge X i formler som et tal, og den pågældende variabel har værdien tom, når du åbner appen, og før du vælger knappen. Når du vælger knappen, giver du X værdien 1.
Hvis du tilføjer en anden knap og angiver egenskaben OnSelect til Set( X, "Hello" ), opstår der en fejl, fordi typen (tekststreng) ikke svarer til typen i det forrige sæt (tal). Alle implicitte definitioner af variabler skal være enige om typen. Alt dette skete igen, fordi du nævnte X i formler, ikke fordi nogen af disse formler faktisk kørte.
Du fjerner en variabel ved at fjerne alle de funktioner af typen Set, UpdateContext, Navigate, Collect eller ClearCollect, der implicit opretter variablen. Uden disse funktioner findes variablen ikke. Du skal også fjerne alle referencer til variablen, fordi de forårsager en fejl.
Levetid og startværdi for variabel
Appen indeholder alle variabler i hukommelsen, mens den kører. Når appen lukkes, går de værdier, som variablerne indeholdt, tabt.
Du kan gemme indholdet af en variabel i en datakilde ved hjælp af funktionerne Patch eller Collect. Du kan også gemme værdier i samlinger på den lokale enhed ved hjælp af funktionen SaveData.
Når brugeren åbner appen, har alle variabler en startværdi, der er tom.
Læs variabler
Brug variablens navn til at læse dens værdi. Du kan f.eks. definere en variabel med denne formel:
Set( Radius, 12 )
Derefter kan du blot bruge Radius hvor som helst, som du kan bruge et tal, og det erstattes med 12:
Pi() * Power( Radius, 2 )
Hvis du tildeler en kontekstvariabel samme navn som en global variabel eller en samling, har kontekstvariablen fortrinsret. Du kan dog stadig henvise til den globale variabel eller samling, hvis du bruger operatoren til fjernelse af flertydige udtryk[@Radius].
Brug en kontekstvariabel (kun Power Apps)
Sådan opretter du regnemaskinen ved hjælp af en kontekstvariabel i stedet for en global variabel.
Sådan fungerer kontekstvariabler:
- Du opretter kontekstvariabler implicit og indstiller dem med funktionen UpdateContext eller Navigate. Når appen startes, har alle kontekstvariabler startværdien tom.
- Du kan opdatere kontekstvariabler med poster. I andre programmeringsværktøjer bruger du ofte "=" for tildelingen, ligesom i "x = 1". Du kan bruge { x: 1 } til kontekstvariabler i stedet. Når du bruger en kontekstvariabel, skal du bruge navnet direkte uden postens syntaks.
- Du kan også angive en kontekstvariabel, når du bruger funktionen Navigate til at vise et skærmbillede. Hvis du tænker på et skærmbillede som en slags procedure eller subrutine, minder denne metode om parameteroverførsel i andre programmeringsværktøjer.
- Med undtagelse af Navigate er kontekstvariabler begrænset til konteksten for et enkelt skærmbillede, hvor de får deres navn. Du kan ikke bruge eller angive dem uden for denne sammenhæng.
- Kontekstvariabler kan indeholde andre værdier, herunder strenge, tal, poster og tabeller.
Lad os bygge regnemaskinen igen ved hjælp af en kontekstvariabel:
Tilføj et kontrolelement af typen tekstinput med navnet TextInput1 og to knapper med navnet Button1 og Button2.
Angiv egenskaben Text for Button1 til "Læg til", og angiv egenskaben Text for Button2 til "Ryd".
Opdater den løbende total, når en bruger vælger knappen Læg til ved at angive dens egenskab OnSelect til denne formel:
UpdateContext( { RunningTotal: RunningTotal + TextInput1.Text } )
Tilstedeværelsen af denne formel medfører oprettelse af RunningTotal som en kontekstvariabel, der indeholder et tal, på grund af operatoren +. Du kan referere til RunningTotal overalt i dette skærmbillede. Når brugeren åbner denne app, har RunningTotal startværdien tom.
Første gang brugeren vælger knappen Tilføj, og UpdateContext køres, indstilles RunningTotal til værdien RunningTotal + TextInput1.
Hvis du vil angive den løbende total til 0, når brugeren vælger knappen Ryd, skal du angive dens egenskab OnSelect til denne formel:
UpdateContext( { RunningTotal: 0 } )
Igen bruges UpdateContext med formlen UpdateContext( { RunningTotal: 0 } ).
Tilføj et kontrolelement af typen Label, og angiv dets egenskab Text til RunningTotal.
Denne formel genberegnes automatisk og viser brugeren værdien af RunningTotal , efterhånden som den ændres baseret på de knapper, som brugeren vælger.
Få vist et eksempel på appen, og du har din regnemaskine som beskrevet tidligere. Indtast et tal i tekstfeltet, og tryk et par gange på knappen Læg til. Når du er klar, skal du vende tilbage til oprettelsesoplevelsen ved hjælp af esc-tasten.
Du kan angive værdien for en variabelkontekst under navigering til et skærmbillede. Denne teknik er nyttig til overførsel af "kontekst" eller "parametre" fra én skærm til en anden. Hvis du vil demonstrere denne metode, skal du indsætte et skærmbillede, indsætte en knap og angive egenskaben OnSelect til denne formel:
Navigate( Screen1, None, { RunningTotal: -1000 } )
Hold Alt-tasten nede, mens du vælger denne knap for både at vise Screen1 og angive kontekstvariablen RunningTotal til -1000.
Hvis du vil vise værdien for kontekstvariablen, skal du vælge menuen Filer og derefter vælge Variabler i venstre rude.
Vælg kontekstvariablen for at se, hvor den er defineret og brugt.
Bruge en samling
Lad os til sidst bygge regnemaskinen med en samling. Da en samling indeholder en tabel, som du nemt kan ændre, bevarer denne regnemaskine et "papirbånd" for hver værdi, når du indtaster dem.
Sådan fungerer samlinger:
- Brug funktionen ClearCollect til at oprette og angive samlinger. Du kan bruge funktionen Collect i stedet, men den kræver en anden variabel i stedet for at erstatte den gamle.
- En samling er en slags datakilde og derfor en tabel. Hvis du vil have adgang til en enkelt værdi i en samling, skal du bruge funktionen First og udtrække ét felt fra den oprettede post. Hvis du bruger en enkelt værdi med ClearCollect, er denne værdi feltet Værdi som i dette eksempel:
First(VariableName).Value
Lad os bygge regnemaskinen igen ved hjælp af en samling:
Tilføj et kontrolelement af typen Text input med navnet TextInput1 og to knapper med navnet Button1 og Button2.
Angiv egenskaben Text for Button1 til "Læg til", og angiv egenskaben Text for Button2 til "Ryd".
Opdater den løbende total, når en bruger vælger knappen Læg til ved at angive dens egenskab OnSelect til denne formel:
Collect( PaperTape, TextInput1.Text )
Det betyder, at denne formel opretter PaperTape som en samling, der indeholder en tabel med en enkelt kolonne til tekststrenge. Du kan referere til PaperTape overalt i denne app. Når en bruger åbner denne app, er PaperTape en tom tabel.
Når denne formel kører, tilføjer den den nye værdi i slutningen af samlingen. Da du tilføjer en enkelt værdi, placerer Collect den automatisk i en tabel med en enkelt kolonne, og kolonnens navn er Værdi, som du bruger senere.
Hvis du vil rydde papirstrimlen, når brugeren vælger knappen Ryd, skal du angive dens egenskab OnSelect til denne formular:
Clear( PaperTape )
Hvis du vil vise den løbende total, skal du tilføje en etiket og angive dens egenskab Text til denne formel:
Sum( PaperTape, Value )
Hvis du vil køre regnemaskinen, skal du trykke på F5 for at åbne Eksempel, indtaste tal i kontrolelementet Tekstinput og vælge knapper.
Tryk på Esc for at vende tilbage til standardarbejdsområdet.
Hvis du vil have vist papirstrimlen, skal du indsætte et kontrolelement af typen Datatabel og angive dens egenskab Items til denne formel:
PaperTape
Vælg Rediger felter i højre rude, vælg Tilføj felt, vælg Værdi, og vælg derefter Tilføj for at få det vist.
Hvis du vil se værdierne i din samling, skal du vælge Samlinger fra menuen Filer.
Hvis du vil gemme og hente din samling, skal du tilføje to ekstra knapkontrolelementer og angive deres egenskaber af typen Text til Indlæs og Gem. Angiv egenskaben OnSelect for knappen Indlæs til denne formel:
Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )
Du skal rydde samlingen først, fordi LoadData føjer de gemte værdier til slutningen af samlingen.
Angiv egenskaben OnSelect for knappen Gem til denne formel:
SaveData(PaperTape, "StoredPaperTape")
Få vist et eksempel igen ved at trykke på F5-tasten , angive tal i kontrolelementet tekstinput og vælge knapper. Vælg knappen Gem. Luk og genindlæs appen, og vælg knappen Indlæs for at genindlæse din samling.