Forstå variabler i lerretsapper

Hvis du har brukt et annet programmeringsverktøy, for eksempel Visual Basic eller JavaScript, kan det hende du spør: hvor er variablene? Power Apps er litt annerledes, og krever en annen fremgangsmåte. I stedet for hente en variabel når du bygger en lerretsapp, kan du stille deg selv spørsmålet: Hva ville jeg gjort i Excel?

I andre verktøy kan du kanskje eksplisitt ha utført en beregning og lagret resultatet i en variabel. Power Apps og Excel omberegner imidlertid automatisk formler etter som inndataene endres, slik at du vanligvis ikke trenger å opprette og oppdatere variabler. Ved å følge denne fremgangsmåten når det er mulig, kan du enklere opprette, forstå og vedlikeholde appen.

I noen tilfeller må du bruke variabler i Power Apps, noe som utvider Excel sin modell ved å legge til formler for virkemåte. Disse formlene kjøres for eksempel når en bruker velger en knapp. I en formel for virkemåte er det er ofte nyttig å angi en variabel som skal brukes i andre formler.

Generelt bør du unngå å bruke variabler. Men noen ganger er det bare en variabel som kan aktivere opplevelsen som du vil ha. Variabler opprettes implisitt og skrives inn når de vises i funksjoner som angir verdiene deres.

Oversette Excel til Power Apps

Excel

La oss gå gjennom hvordan Excel fungerer. En celle kan inneholde en verdi, for eksempel et tall eller en streng, eller en formel som er basert på verdiene i andre celler. Etter at brukeren angir en annen verdi i en celle, vil Excel automatisk beregne formler som er avhengige av den nye verdien på nytt. Du trenger å gjøre noe programmering for å aktivere denne virkemåten.

I følgende eksempel er cellen A3 satt til formelen A1+A2. Hvis A1 eller A2 endres, beregnes A3 automatisk på nytt for å gjenspeile endringen. Denne virkemåten krever ingen koding utenfor selve formelen.

Animasjonen av å omberegne summen av to tall i Excel.

Excel har ikke variabler. Verdien til en celle som inneholder en formel endres basert på inndataene, men det finnes ingen måte å huske resultatet av en formel på og lagre dem i en celle, eller noen andre steder. Hele regnearket endres og alle tidligere beregnede verdier går tapt, hvis du endrer verdien for en celle. En Excel-bruker kan kopiere og lime inn celler, men det er noe brukeren kontrollerer manuelt og er ikke mulig med formler.

Power Apps

Apper du oppretter i Power Apps, fungerer omtrent på samme måte som Excel. I stedet for å oppdatere celler, kan du legge til kontroller hvor som helst på en skjerm og navngi dem for bruk i formler.

Du kan for eksempel gjenskape virkemåten til Excel i en app ved å legge til en Etikett-kontroll, kalt Label1, og to Tekstinndata-kontroller, kalt TextInput1 og TextInput2. Hvis du deretter setter Tekst-egenskapen for Label1 til TextInput1 + TextInput2, vil den alltid vise summen av tallet som er i TextInput1 og TextInput2 automatisk.

Beregne summen av to tall i Power Apps.

Legg merke til at Label1-kontrollen som er valgt, viser Text-formelen i formellinjen øverst på skjermen. Her finner vi formelen TextInput1 + TextInput2. Denne formelen oppretter en avhengighet mellom disse kontrollene, på samme måte som avhengigheter opprettes mellom cellene i en Excel-arbeidsbok. La oss endre verdien av TextInput1:

Animasjon av beregning av summen av to tall i Power Apps.

Formelen for Label1 har blitt automatisk beregnet på nytt, og viser den nye verdien.

I Power Apps kan du bruke formler til å bestemme, ikke bare den primære verdien av en kontroll, men også egenskaper som formatering. I eksemplet nedenfor er en formel for Color-egenskapen for etiketten som automatisk viser negative verdier i rødt. If-funksjonen bør du kunne kjenne igjen fra Excel:

If( Value(Label1.Text) < 0, Red, Black )

Animasjon av betinget formatering.

Du kan bruke formler for et bredt utvalg av scenarioer:

  • En kartkontroll kan vise den gjeldende posisjonen din med en formel som bruker Location.Latitude og Location.Longitude ved hjelp av enhetens GPS. Kartet sporer automatisk plasseringen din, når du flytter på deg.
  • Andre brukere kan oppdatere datakilder. Andre i gruppen kan kanskje for eksempel oppdatere elementer i en liste. Når du oppdaterer en datakilde, beregnes automatisk alle avhengige formler for å gjenspeile de oppdaterte dataene. Videre kan du kanskje angi Items-egenskapen i et galleri til formelen Filter (SharePointList), som automatisk viser det nylig filtrerte settet med poster.

Godtgjøring

Det er mange fordeler med å bruke formler til å bygge apper:

  • Hvis du kjenner Excel, kjenner du også Power Apps. Modellen og formelspråket er det samme.
  • Hvis du har brukt andre programmeringsverktøy, kan du tenke deg hvor mye kode som ville vært nødvendig for å fullføre disse eksemplene. I Visual Basic måtte du ha skrevet en hendelsesbehandling for endringshendelsen på hver kontroll for tekstinndata. Koden for å utføre beregningen i hver av disse er overflødig og kan komme ut av balanse, eller du måtte ha skrevet en felles delrutine. Du oppnådde alt dette med en enkelt, én-linje formel i Power Apps.
  • For å forstå hvor teksten i Label1 kommer fra, vet du nøyaktig hvor du skal lete: formelen i Text-egenskapen. Det finnes ingen annen måte å påvirke teksten i kontrollen. I et tradisjonelt programmeringsverktøy kan eventuelle hendelsesbehandlinger eller delrutiner endre verdien for etiketten, fra hvor som helst i programmet. Dette kan gjøre det vanskelig å spore når og hvor en variabel ble endret.
  • Hvis brukeren endrer en Glidebryter-kontroll og deretter ombestemmer seg, kan de endre glidebryteren tilbake til den opprinnelige verdien. Og det er som om ingenting ble endret: appen viser de samme kontrollverdiene som den gjorde før. Det er ingen konsekvenser for å eksperimentere og spørre «hva om», på samme måte som i Excel.

Du vil vanligvis komme bedre ut av det, hvis du kan oppnå en effekt ved hjelp av en formel. La formelmotoren i Power Apps arbeide for deg.

Slik vet du når du skal bruke variabler

La oss endre den enkle kalkulatoren til å fungere som en gammeldags kalkulator, med en løpende sum. Hvis du velger en Legg til-knapp, skal du legge til et tall til den løpende summen. Hvis du velger en Tøm-knapp, vil du tilbakestille den løpende totalsummen til null.

Vis Beskrivelse
App med en Tekstinndata-kontroll, en etikett og to knapper. Når appen starter, er den løpende summen 0.

Den røde prikken representerer brukerens finger i tekstinndataboksen, der brukeren skriver inn 77.
Tekstinndata-kontrollen inneholder 77, og Legg til-knappen blir trykket. Brukeren velger Legg til-knappen.
Totalsummen er 77, og 77 blir lagt til på nytt. 77 legges til den løpende totalsummen.

Brukeren velger Legg til-knappen på nytt.
Totalsummen er 154 før den tømmes. 77 legges til på nytt i den løpende totalsummen, noe som resulterer i 154.

Brukeren velger Tøm-knappen.
Totalsummen tømmes. Den løpende totalsummen er tilbakestilt til 0.

Kalkulatoren bruker noe som ikke finnes i Excel: en knapp. I denne appen kan du ikke bruke bare formler til å beregne den løpende summen, fordi verdien avhenger av en serie med handlinger som brukeren gjør. Den løpende summen må i stedet registreres og oppdateres manuelt. De fleste programmeringsverktøy lagrer denne informasjonen i en variabel.

Noen ganger trenger du en variabel for at appen skal oppføre seg slik du ønsker. Men tilnærmingen leveres med advarsler:

  • Du må oppdatere den løpende summen manuelt. Automatisk omberegning gjør ikke dette for deg.
  • Den løpende summen kan ikke lenger beregnes basert på verdiene i andre kontroller. Det avhenger av hvor mange ganger brukeren valgte Legg til-knappen, og hvilken verdi som var i kontrollen for tekstinndata hver gang. Angav brukeren 77, og valgte Legg til to ganger, eller angav de 24 og 130 for hvert av tilleggene? Du kan ikke se forskjell når summen har nådd 154.
  • Endringer i totalen kan komme fra forskjellige baner. I dette eksemplet kan både Legg til- og Fjern-knappene oppdatere summen. Hvilken knapp forårsaker problemet, hvis appen ikke fungerer slik du forventer?

Bruke en global variabel

Vi krever en variabel som inneholder den løpende summen, hvis du vil opprette kalkulatoren. De enkleste variablene å arbeide med i Power Apps er globale variabler.

Slik fungerer globale variabler:

  • Du kan angi verdien for den globale variabelen med Set-funksjonen. Set( MyVar, 1 ) angir den globale variabelen MyVar til en verdi på 1.
  • Du bruker den globale variabelen ved å referere til navnet som brukes med Set-funksjonen. MyVar vil returnere 1 i dette tilfellet.
  • Globale variabler kan inneholde en hvilken som helst verdi, inkludert strenger, tall, poster, og tabeller.

La oss gjenoppbygge kalkulatoren vår ved hjelp av en global variabel:

  1. Legg til en teksinndatakontroll kalt TextInput1, og to knapper, kalt Knapp1 og Knapp2.

  2. Angi Text-egenskapen for Knapp1 til Legg til, og angi Text-egenskapen for Knapp2 til Tøm.

  3. For å oppdatere den løpende summen hver gang en bruker velger Legg til-knappen, kan du angi OnSelect-egenskapen til denne formelen:

    Set( RunningTotal, RunningTotal + TextInput1 )

    Det at denne formelen eksisterer , etablerer RunningTotal som en global variabel som inneholder et tall på grunn av en +-operator. Du kan referere til RunningTotal hvor som helst i appen. Når brukeren åpner denne appen, har RunningTotal en startverdi som er tom.

    Første gang en bruker velger Legg til-knappen og Set kjører, blir RunningTotal angitt til verdien RunningTotal + TextInput1.

    Egenskapen OnSelect for Legg til-knappen er satt til Set-funksjonen.

  4. For å angi den løpende totalsummen til 0 hver gang en bruker velger Tøm-knappen, kan du angi OnSelect-egenskapen til denne formelen:

    Set( RunningTotal, 0 )

    Egenskapen OnSelect for Tøm-knappen er satt til Set-funksjonen.

  5. Legg til en Etikett-kontroll, og angi Text-egenskapen til RunningTotal.

    Denne formelen beregnes automatisk og viser brukeren verdien av RunningTotal samtidig med at den endres basert på knappene som brukeren velger.

    Text-egenskapen for etiketten er satt til navnet på variabelen.

  6. Forhåndsvis appen, og så har vi kalkulatoren vår som beskrevet ovenfor. Skriv inn et tall i tekstboksen og trykk på Legg til-knappen flere ganger. Når du er klar kan du gå tilbake til redigeringsopplevelsen ved hjelp av ESC.

    Tekstinndatakontrollen inneholder en verdi, og etiketten inneholder den løpende summen.

  7. Gjør ett av følgende for å vise verdien for den globale variabelen:

    • Hvis du bruker forhåndsversjonen av Power Apps Studio, velger du Variabler på appredigeringsmenyen.

      Variabler og samlingsmeny.

    • Hvis du bruker den klassiske versjonen av Power Apps Studio, velger du Fil-menyen og velger Variabler i ruten til venstre.

  8. Hvis du vil se alle steder der variabelen blir definert og brukt, velger du den under Globale variabler.

    Liste over plasseringer der variabelen brukes.

Ulike typer variabler

Power Apps har tre typer variabler:

Variabeltype Område Beskrivelse Funksjoner som oppretter
Globale variabler App Enklest å bruke. Inneholder et tall, en tekststreng, Boolean, post, tabell, osv. som kan refereres til fra hvor som helst i appen. Angi
Kontekstvariabler Skjermbilde Bra for å sende verdier til en skjerm, omtrent som parametere er til en prosedyre i andre språk. Kan refereres bare fra én skjerm. UpdateContext
Navigate
Samlinger App Inneholder en tabell som kan være referert til fra hvor som helst i appen. Tillater innholdet i tabellen å endres, i stedet for å angis i sin helhet. Du kan lagre til den lokale enheten for senere bruk. Collect
ClearCollect

Opprette og fjerne variabler

Alle variabler opprettes implisitt når de vises i en funksjon av typen Set, UpdateContext, Navigate, Collect eller ClearCollect. Hvis du vil deklarere en variabel og typen, trenger du bare inkludere den i noen av disse funksjonene hvor som helst i appen. Ingen av disse funksjonene oppretter variabler, de fyller bare ut variabler med verdier. Du deklarerer aldri variabler eksplisitt som du kanskje må i andre programmeringsverktøy, og all innskriving er implisitt fra bruk.

Det kan for eksempel hende at du har en knappekontroll med en OnSelect-formel som er lik Set( X, 1 ). Denne formelen etablerer X som en variabel med en type tall. Du kan bruke X i formler som et tall, og denne variabelen har en tom verdi etter at du har åpnet appen, men før du velger knappen. Når du velger knappen, gir du X verdien 1.

Hvis du la til en annen knapp og satte OnSelect-egenskapen til Set( X, "Hello" ), vil det oppstå en feil fordi typen (tekststrengen) ikke samsvarer med typen i den forrige Set (tall). Alle implisitte definisjoner av variabelen må være enige om typen. Alt dette skjedde fordi du nevnte X i formler, ikke fordi noen av disse formlene faktisk ble kjørt.

Du fjerner en variabel ved å fjerne alle funksjonene Set, UpdateContext, Navigate, Collect eller ClearCollect som implisitt etablerer variabelen. Uten disse funksjonene eksisterer ikke variabelen. Du må også fjerne eventuelle referanser til variabelen fordi det vil føre til en feil.

Levetid og opprinnelig verdi for variabel

Alle variabler beholdes i minnet mens appen kjører. Verdiene som holdes i variabler, går tapt etter at appen lukkes.

Du kan lagre innholdet i en variabel i en datakilde ved hjelp av funksjonen Patch eller Collect. Du kan også lagre verdier i samlinger på den lokale enheten ved hjelp av SaveData-funksjonen.

Når brukeren åpner appen, har alle variabler en startverdi som tom.

Lese variabler

Du kan bruke navnene på variablene til å lese verdien. Du kan for eksempel definere en variabel med denne formelen:

Set( Radius, 12 )

Deretter kan du bare bruke Radius der du kan bruke et tall, og det blir erstattet med 12:

Pi() * Power( Radius, 2 )

Hvis du angir en kontekstvariabel som det samme navnet som en global variabel eller en samling, har kontekstvariabelen forrang. Du kan imidlertid fremdeles referere til den globale variabelen eller samlingen hvis du bruker tvetydighetsoperatoren [@Radius].

Bruke en kontekstvariabel

La oss se på hvordan kalkulatoren vår vil opprettes ved hjelp av en kontekstvariabel i stedet for en global variabel.

Slik fungerer kontekstvariablene:

  • Du etablerer og angir kontekstvariabler implisitt ved å bruke funksjonen UpdateContext eller Navigate. Når appen starter, er startverdien for alle kontekstvariabler tom.
  • Du oppdaterer kontekstvariablene med poster. I andre programmeringsverktøy bruker du vanligvis "=" for tildeling, som i "x = 1". For kontekstvariablene kan du bruke { x: 1 } i stedet. Når du bruker en kontekstvariabel, bruker du navnet direkte uten oppføringssyntaksen.
  • Du kan også angi en kontekstvariabel når du bruker Navigate-funksjonen til å vise en skjerm. Hvis du tenker på en skjerm som en slags prosedyre eller delrutine, ligner denne tilnærmingen på parameteroverføring i andre programmeringsverktøy.
  • Kontekstvariablene er begrenset til konteksten for en enkelt skjerm, som er hvor de får navnet sitt fra, med unntak av Navigate. Du kan ikke bruke eller angi dem utenfor denne konteksten.
  • Kontekstvariabler kan inneholde en hvilken som helst verdi, inkludert strenger, tall, poster, og tabeller.

La oss gjenoppbygge kalkulatoren vår ved hjelp av en kontekstvariabel:

  1. Legg til en teksinndatakontroll kalt TextInput1, og to knapper, kalt Knapp1 og Knapp2.

  2. Angi Text-egenskapen for Knapp1 til Legg til, og angi Text-egenskapen for Knapp2 til Tøm.

  3. For å oppdatere den løpende summen hver gang en bruker velger Legg til-knappen, kan du angi OnSelect-egenskapen til denne formelen:

    UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    Det at denne formelen eksisterer , etablerer RunningTotal som en kontekstvariabel som inneholder et tall på grunn av en +-operator. Du kan referere til RunningTotal hvor som helst i dette skjermbildet. Når brukeren åpner denne appen, har RunningTotal en startverdi som er tom.

    Første gang en bruker velger Legg til-knappen og UpdateContext kjører, blir RunningTotal angitt til verdien RunningTotal + TextInput1.

    OnSelect-egenskapen for Legg til-knappen med updatecontext.

  4. For å angi den løpende totalsummen til 0 hver gang en bruker velger Tøm-knappen, kan du angi OnSelect-egenskapen til denne formelen:

    UpdateContext( { RunningTotal: 0 } )

    På nytt ser vi at UpdateContext brukes med formelen UpdateContext( { RunningTotal: 0 } ).

    OnSelect-egenskapen for Tøm-knappen med updatecontext.

  5. Legg til en Etikett-kontroll, og angi Text-egenskapen til RunningTotal.

    Denne formelen beregnes automatisk og viser brukeren verdien av RunningTotal samtidig med at den endres basert på knappene som brukeren velger.

    Text-egenskap for etikett.

  6. Forhåndsvis appen, og så har vi kalkulatoren vår som beskrevet ovenfor. Skriv inn et tall i tekstboksen og trykk på Legg til-knappen flere ganger. Når du er klar kan du gå tilbake til redigeringsopplevelsen ved hjelp av ESC.

    Tekstinndatakontrollen viser en verdi, og etiketten viser den løpende summen.

  7. Du kan angi verdien til en kontekstvariabel mens du navigerer til en skjerm. Dette er nyttig for å overføre «kontekst» eller «parametere» fra en skjerm til en annen. Hvis du vil demonstrere denne teknikken, setter du inn et skjermbilde, setter inn en knapp og angir OnSelect-egenskapen til denne formelen:

    Navigate( Screen1, None, { RunningTotal: -1000 } )

    OnSelect-egenskapen for en knapp.

    Hold nede Alt-tasten mens du velger denne knappen for både å vise Screen1 og angi kontekstvariabelen RunningTotal til -1000.

    Screen1 er åpen.

  8. Gjør ett av følgende for å vise verdien for kontekstvariabelen:

    • Hvis du bruker forhåndsversjonen av Power Apps Studio, velger du Variabler på appredigeringsmenyen.

    • Hvis du bruker den klassiske versjonen av Power Apps Studio, velger du Fil-menyen og velger deretter Variabler i ruten til venstre.

  9. Hvis du vil se hvor kontekstvariabelen defineres og brukes, velger du den under Kontekstvariabler.

Bruke en samling

Til slutt skal vi se på å opprette vår egen kalkulator med en samling. Siden en samling inneholder en tabell som er enkel å endre, kan vi få denne kalkulatoren til å beholde et «listepapir» for hver verdi, etter som de blir registrert.

Slik fungerer samlinger:

  • Opprett og angi samlinger ved å bruke ClearCollect-funksjonen. Du kan også bruke Collect-funksjonen, men den vil effektivt kreve en annen variabel i stedet for å erstatte den gamle.
  • En samling er en type datakilde, og derfor en tabell. Hvis du vil ha tilgang til en enkelt verdi i en samling, kan du bruke First-funksjonen, og trekke ut et felt fra den resulterende posten. Hvis du har brukt en enkeltverdi med ClearCollect, vil dette være Verdi-feltet, som i dette eksemplet:
    First( VariableName ).Value

La oss opprette kalkulatoren vår ved å bruke en samling:

  1. Legg til en Tekstinndata-kontroll kalt TextInput1, og to knapper, kalt Knapp1 og Knapp2.

  2. Angi Text-egenskapen for Knapp1 til Legg til, og angi Text-egenskapen for Knapp2 til Tøm.

  3. For å oppdatere den løpende summen hver gang en bruker velger Legg til-knappen, kan du angi OnSelect-egenskapen til denne formelen:

    Collect( PaperTape, TextInput1.Text )

    Det at denne formelen eksisterer, etablerer PaperTape som en samling som inneholder en tabell med én kolonne med tekststrenger. Du kan referere til PaperTape hvor som helst i denne appen. Når en bruker åpner denne appen, er PaperTape en tom tabell.

    Når denne formelen kjører, legger den til den nye verdien på slutten av samlingen. Siden vi legger til en enkelt verdi, vil Collect automatisk plassere den i en énkolonnetabell med kolonnenavnet Value, som du skal bruke senere.

    OnSelect-egenskapen for Legg til-knappen med collect.

  4. Angi OnSelect-egenskapen til denne formelen for å tømme listepapiret, når brukeren velger Tøm-knappen:

    Clear( PaperTape )

    OnSelect-egenskapen for Tøm-knappen tøm.

  5. Legg til en etikett og angi Text-egenskapen til denne formelen for å vise den løpende summen:

    Sum( PaperTape, Value )

    Text-egenskap for etiketten.

  6. Trykk på F5 for å åpne forhåndsvisning, skriv inn tall i Tekstinndata-kontrollen, og velg knapper, hvis du vil kjøre kalkulatoren.

    Tekstinndatakontrollen viser en verdi, og etiketten viser den løpende summen.

  7. Trykk på Esc for å gå tilbake til standardarbeidsområdet.

  8. Hvis du vil vise listepapir, kan du sette inn en Datatabell-kontroll, og angi Items-egenskapen til denne formelen:

    PaperTape

    I ruten til høyre velger du Rediger felt, og velg deretter Legg til felt, velg Verdi-kolonnen og velg deretter Legg til for å vise den.

    Datatabell som viser verdiene som er lagt til i samlingen.

  9. Hvis du vil se verdiene i samlingen, gjør du ett av følgende:

    • Hvis du bruker forhåndsversjonen av Power Apps Studio, velger du Variabler på appredigeringsmenyen og velger deretter Samlinger.

    • Hvis du bruker den klassiske versjonen av Power Apps Studio, velger du SamlingerFil-menyen.

  10. Legg til to ekstra knappekontroller og angi Text-egenskapene til Last inn og Lagre for å lagre og hente samlingen. Angi OnSelect-egenskapen for Load-knappen til denne formelen:

    Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )

    Du må tømme samlingen først, siden LoadData vil tilføye de lagrede verdiene på slutten av samlingen.

    OnSelect-egenskapen for Load-knappen.

  11. Angi OnSelect-egenskapen for Save-knappen som denne formelen:

    SaveData( PaperTape, "StoredPaperTape" )

    OnSelect-egenskapen* for Save-knappen.

  12. Forhåndsvis på nytt ved å trykke på F5, skriv inn tall i tekstinndatakontrollen, og velg knapper. Velg Lagre-knappen. Lukk og last inn appen, og velg Last inn-knappen for å laste inn samlingen på nytt.

Obs!

Funksjonene SaveData og LoadData fungerer i Power Apps Mobile, men ikke i Power Apps Studio eller nettavspilleren for Power Apps.

Obs!

Kan du fortelle oss om språkinnstillingene for dokumentasjonen? Ta en kort undersøkelse. (vær oppmerksom på at denne undersøkelsen er på engelsk)

Undersøkelsen tar rundt sju minutter. Det blir ikke samlet inn noen personopplysninger (personvernerklæring).