Partajați prin


Variabile

Notă

Microsoft Power Fx este noul nume pentru limbajul formulă al aplicațiilor pânză. Aceste articole sunt lucrare în curs de desfășurare, deoarece extragem limba din aplicațiile pânză, o integrăm cu alte produse Microsoft Power Platform și le punem la dispoziție ca open source. Începeți cu Prezentarea generală Microsoft Power Fx pentru o introducere în limbă.

Dacă ați folosit un alt instrument de programare, cum ar fi Visual Basic sau JavaScript, este posibil să vă întrebați: Unde sunt variabilele? Microsoft Power Fx este puțin diferit și necesită o abordare diferită. În loc să căutați o variabilă atunci când scrieți o formulă, întrebați-vă: Ce aș face într-o foaie de calcul?

În alte instrumente, este posibil să fi efectuat explicit un calcul și să fi stocat rezultatul într-o variabilă. In orice caz, Power Fx și Excel, recalculează ambele automat formule pe măsură ce datele de intrare se schimbă, astfel încât, de obicei, nu este necesar să creați și să actualizați variabile. Prin această abordare ori de câte ori este posibil, puteți crea, înțelege și întreține mai ușor aplicația.

În unele cazuri, va trebui să utilizați variabile în Power Fx, care extinde modelul Excel prin adăugarea de formule comportamentale. Aceste formule rulează atunci când, de exemplu, un utilizator selectează un buton. În cadrul unei formule comportamentale, este adesea util să setați o variabilă care să fie utilizată în alte formule.

În general, evitați să utilizați variabile. Dar uneori doar o variabilă poate activa experiența dorită. Variabilele sunt implicit create și tastate atunci când apar în funcții care își stabilesc valorile.

Translatați Excel în Power Fx

Excel

Să trecem în revistă modul în care funcționează Excel. O celulă poate conține o valoare, cum ar fi un număr sau un șir, sau o formulă care se bazează pe valorile altor celule. După ce utilizatorul introduce o valoare diferită într-o celulă, Excel recalculează automat orice formule care depind de noua valoare. Nu trebuie să faceți nicio programare pentru a activa acest comportament.

În exemplul următor, celula A3 este setată la formulă A1+A2. Dacă A1 sau A2 se modifică, A3 se recalculează automat pentru a reflecta schimbarea. Acest comportament nu necesită codare în afara formulei în sine.

Animarea recalculării sumei a două numere în Excel.

Excel nu are variabile. Valoarea unei celule care conține o formulă se schimbă în funcție de intrarea sa, dar nu există nicio modalitate de a vă aminti rezultatul unei formule și de a o depozita într-o celulă sau oriunde altundeva. Dacă schimbați valoarea unei celule, întreaga foaie de calcul se poate modifica și toate valorile calculate anterior se pierd. Un utilizator Excel poate copia și lipi celule, dar această operațiune este sub controlul manual al utilizatorului și nu este posibilă cu formule.

Power Fx

Logica pe care o creați în Power Fx se comportă foarte mult ca Excel. În loc să actualizați celulele, puteți adăuga controale oriunde doriți pe un ecran și să le numiți pentru a fi utilizate în formule.

De exemplu în Power Apps, puteți replica comportamentul Excel într-o aplicație prin adăugarea unui control Label, numit Label1 și două controale Text input, numite TextInput1 și TextInput2. Dacă apoi setați Text proprietatea Label1 la TextInput1.Text + TextInput2 .Text, va afișa întotdeauna suma oricăror numere din TextInput1 și TextInput2 automat.

Calcularea sumei a două numere din Power Fx.

Observați că controlul Label1 se selectează , afișând formula sa Text din bara de formule din partea de sus a ecranului. Aici găsim formula TextInput1.Text + TextInput2.Text. Această formulă creează o dependență între aceste controale, la fel cum sunt create dependențe între celule dintr-un registru de lucru Excel. Să schimbăm valoarea TextInput1:

Animație de calcul a sumei a două numere în Power Fx.

Formula pentru Label1 a fost recalculată automat, arătând noua valoare.

În Power Fx, puteți utiliza formule pentru a determina nu numai valoarea primară a unui control, ci și proprietăți, cum ar fi formatarea. În următorul exemplu, o formulă pentru proprietatea Culoare a etichetei va afișa automat valorile negative în roșu. Funcția If ar trebui să pară familiară din Excel:

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

Animația formatării condiționate.

Puteți utiliza formule pentru o mare varietate de scenarii:

  • Utilizând GPS-ul dispozitivului dvs., un control de hartă vă poate afișa locația curentă cu o formulă care folosește Location.Latitude și Location.Longitude. Pe măsură ce vă deplasați, harta vă va urmări automat locația.
  • Alți utilizatori pot actualiza surse de date. De exemplu, alții din echipa ta ar putea actualiza articole într-o listă SharePoint. Când actualizați un sursă de date, orice formule dependente sunt recalculate automat pentru a reflecta datele actualizate. Continuând exemplul, puteți seta proprietatea galeriei Elemente la formula Filtrare (SharePointList), care va afișa automat setul nou filtrat de înregistrări.

Beneficii

Utilizarea de formule pentru a crea aplicații are multe avantaje:

  • Dacă știți Excel, știți Power Fx. Modelul și limbajul formulelor sunt aceleași.
  • Dacă ați utilizat alte instrumente de programare, gândiți-vă la cât de mult cod ar fi necesar pentru a realiza aceste exemple. În Visual Basic, ar trebui să scrieți o rutină de tratare a evenimentelor pentru evenimentul de modificare pe fiecare control de introducere text. Codul pentru a efectua calculul în fiecare dintre acestea este redundant și ar putea ieși din sincronizare, sau ar trebui să scrieți o subrutină comună. În Power Fx, ați realizat toate acestea printr-o singură formulă de o singură linie.
  • Pentru a înțelege de unde provine textul Label1, știți exact unde să cauți: formula din proprietatea Text. Nu există altă modalitate de a afecta textul acestui control. Într-un instrument de programare tradițional, orice rutină de tratare a evenimentelor sau subrutină ar putea modifica valoarea etichetei, de oriunde în program. Acest lucru poate face dificil de urmărit când și unde a fost modificată o variabilă.
  • Dacă utilizatorul își schimbă un control al glisorului și apoi se răzgândește, poate modifica glisorul înapoi la valoarea sa originală. Și este ca și cum nimic nu s-ar fi schimbat vreodată: aplicația arată aceleași valori de control ca și înainte. Nu există ramificări pentru experimentarea și întrebarea „și dacă”, așa cum nu există în Excel.

În general, dacă puteți obține un efect folosind o formulă, vă veți descurca mai bine. Lăsați motorul de formule din Power Fx să facă treaba pentru dvs.

Cum să știți când să folosiți variabilele

Să schimbăm elementul nostru simplu de adăugare pentru a acționa ca o mașină de adăugare de modă veche, cu un total de rulare. Dacă selectați un buton Adăugare, veți adăuga un număr la totalul de rulare. Dacă selectați un buton Golire, veți reseta totalul de rulare la zero.

Afișare Descriere
Aplicație cu un control de introducere text, o etichetă și două butoane. Când aplicația pornește, numărul total de rulare este 0.

Punctul roșu reprezintă degetul utilizatorului în caseta de introducere a textului, în care utilizatorul introduce 77.
Controlul de Introducere text conține 77, iar butonul Adăugare este apăsat. Utilizatorul selectează butonul Adăugare.
Totalul este de 77 și i se adaugă încă 77. 77 se adaugă la numărul total de rulare.

Utilizatorul selectează butonul Adăugare din nou.
Totalul este de 154 înainte de a fi șters. 77 se adaugă din nou la totalul de rulare, rezultând 154.

Utilizatorul selectează butonul Golire.
Totalul este golit. Totalul de rulare este resetat la 0.

Mașina noastră de adăugare folosește ceva care nu există în Excel: un buton. În această aplicație, nu puteți utiliza doar formule pentru a calcula totalul de rulare, deoarece valoarea acesteia depinde de o serie de acțiuni întreprinse de utilizator. În schimb, totalul nostru de rulare trebuie să fie înregistrat și actualizat manual. Majoritatea instrumentelor de programare stochează aceste informații într-o variabilă.

Uneori veți avea nevoie de o variabilă pentru ca aplicația dvs. să se comporte așa cum doriți. Dar abordarea vine cu avertismente:

  • Trebuie să actualizați manual totalul de rulare. Recalcularea automată nu o va face pentru dvs.
  • Totalul de rulare nu mai poate fi calculat pe baza valorilor altor comenzi. Depinde de câte ori a selectat utilizatorul butonul Adăugare și ce valoare a fost în controlul de introducere text de fiecare dată. Utilizatorul a introdus 77 și a selectat Adăugare de două ori, sau au specificat 24 și 130 pentru fiecare completare? Nu puteți spune diferența după ce totalul a ajuns la 154.
  • Modificări ale totalului pot veni pe diferite căi. În acest exemplu, ambele butoane Adăugare și Golire pot actualiza totalul. Dacă aplicația nu se comportă așa cum vă așteptați, ce buton cauzează problema?

Utilizați o variabilă globală

Pentru a crea mașina noastră de adăugare, avem nevoie de o variabilă pentru a reține totalul de rulare. Cele mai simple variabile care funcționează în cadrul Power Fx sunt variabile globale.

Cum funcționează variabilele globale:

  • Setați valoarea variabilei globale cu funcţia Setare. Set( MyVar, 1 ) setează variabila globală MyVar la o valoare de 1.
  • Utilizați variabila globală făcând referire la numele folosit cu funcţia Setare. În acest caz, MyVar va returna 1.
  • Variabilele globale pot conține orice valoare, inclusiv șiruri, numere, înregistrări și tabele.

Să ne reconstruim mașina de adăugare folosind o variabilă globală:

  1. Adăugați un control de introducere text, numit TextInput1 și două butoane, denumite Button1 și Button2.

  2. Setați propietatea Text pentru Buton1 la "Adăugare" și setați proprietatea Text pentru Buton2 la „Golire”.

  3. Pentru a actualiza totalul de rulare de fiecare dată când un utilizator selectează butonul Adăugare, setează proprietatea OnSelect la această formulă:

    Set(RunningTotal, RunningTotal + TextInput1.Text)

    Simpla existență a acestei formule stabilește RunningTotal ca o variabilă globală care deține un număr din cauza operatorului +. Puteți face referire la RunningTotal oriunde în aplicație. Ori de câte ori utilizatorul deschide această aplicație, RunningTotal are o valoare inițială de gol.

    Prima dată când un utilizator selectează butonul Adăugare și Setare rulează, RunningTotal este setat la valoarea RunningTotal + TextInput1.

    Proprietatea OnSelect a butonului Adăugare este setată la funcția Setare.

  4. Pentru a seta totalul de rulare la 0 de fiecare dată când utilizatorul selectează butonul Golire, setează proprietatea OnSelect la această formulă:

    Set (RunningTotal, 0)

    Proprietatea OnSelect a butonului Golire este setată la funcția Setare.

  5. Adăugați un control Label și setați proprietatea Text la RunningTotal.

    Această formulă va fi automat recalculată și va arăta utilizatorului valoarea RunningTotal întrucât se schimbă pe baza butoanelor selectate de utilizator.

    Proprietatea text a etichetei este setată la numele variabilei.

  6. Previzualizați aplicația și avem mașina noastră de adăugare așa cum este descris mai sus. Introduceți un număr în caseta de text și apăsați butonul Adăugare de câteva ori. Când este gata, reveniți la experiența de creare cu ajutorul tastei Esc.

    Controlul de introducere a textului conține o valoare, iar eticheta conține totalul de rulare.

  7. Pentru a afișa valoarea variabilei globale, selectați meniul Fişier și selectați Variabile în panoul din stânga.

    Opțiunea Variabile din meniul Fișier.

  8. Pentru a afișa toate locurile în care variabila este definită și folosită, selectați-o.

    Lista locației în care este utilizată variabila.

Tipuri de variabile

Power Fx are două tipuri de variabile:

Tip variabile Domeniu de acoperire Descriere Funcții care stabilesc
Variabile globale Aplicație Cel mai simplu de utilizat. Deține un număr, șir de text, Boolean, înregistrare, tabel etc., care pot fi referințe din orice parte a aplicației. Setați
Colecții Aplicație Deține un tabel la care se poate face referire din orice parte a aplicației. Permite modificarea conținutului tabelului, mai degrabă decât setarea ca întreg. Poate fi salvat pe dispozitivul local pentru utilizare ulterioară. Colectați
ClearCollect

Când este utilizat în Power Apps, există un al treilea tip de variabilă:

Tip variabile Scope Descriere Funcții care stabilesc
Variabile de context Ecran Excelent pentru trecerea valorilor pe un ecran, la fel ca parametrii la o procedură în alte limbi. Poate fi făcută referire de pe un singur ecran. UpdateContext
Navigați

Creați și eliminați variabile

Toate variabilele sunt create implicit atunci când apar într-o funcție Setare, UpdateContext, Navigare, Colectare, sau ClearCollect. Pentru a declara o variabilă și tipul acesteia, trebuie doar să o includeți în oricare dintre aceste funcții, oriunde în aplicația dvs. Niciuna dintre aceste funcții nu creează variabile; ele doar completează variabilele cu valori. Nu declarați niciodată variabile în mod explicit așa cum este posibil într-un alt instrument de programare și tastarea este implicită de la utilizare.

De exemplu, este posibil să aveți un control buton cu o formulă OnSelect egala cu Set (X, 1). Această formulă stabilește X ca variabilă cu un tip de număr. Puteți folosi X în formule ca număr, iar variabila respectivă are o valoare de gol după ce deschideți aplicația, dar înainte de a selecta butonul. Când selectați butonul, dați X valoarea a 1.

Dacă ați adăugat un alt buton și ați setat proprietatea sa OnSelect la Set (X, „Bună ziua”), s-ar produce o eroare deoarece tipul (șirul de text) nu se potrivește cu cel precedent Setat (număr). Toate definițiile implicite ale variabilei trebuie să fie de acord asupra tipului. Din nou, toate acestea s-au întâmplat pentru că ați menționat X în formule, nu pentru că oricare dintre aceste formule a rulat efectiv.

Înlăturați o variabilă eliminând toate funcțiile Setare, UpdateContext, Navigare, Colectare sau ClearCollect care stabilesc în mod implicit variabila. Fără aceste funcții, variabila nu există. De asemenea, trebuie să eliminați orice referință la variabilă, deoarece acestea vor cauza o eroare.

Variabila durată de viață și valoarea inițială

Toate variabilele sunt păstrate în memorie în timp ce aplicația rulează. După închiderea aplicației, valorile pe care variabilele le-au deținut se pierd.

Puteți stoca conținutul unei variabile într-un sursă de date folosind funcțiile Patch sau Colectare. De asemenea, puteți stoca valori în colecțiile de pe dispozitivul local, folosind funcţia SaveData.

Când utilizatorul deschide aplicația, toate variabilele au o valoare inițială de gol.

Citirea variabilelor

Folosiți numele variabilei pentru a citi valoarea acesteia. De exemplu, puteți defini o variabilă cu această formulă:

Set( Radius, 12 )

Apoi puteți folosi pur și simplu Rază oriunde puteți utiliza un număr și acesta va fi înlocuit cu 12:

Pi() * Power( Radius, 2 )

Dacă dați unei variabile de context același nume ca o variabilă globală sau o colecție, variabila de context are prioritate. Cu toate acestea, puteți face referire la variabila globală sau la colecție dacă utilizați operatorul de dezambiguizare[@Radius].

Utilizați o variabilă de context (doar Power Apps)

Să analizăm cum ar fi creată mașina noastră de adăugare folosind o variabilă de context în loc de o variabilă globală.

Cum funcționează variabilele de context:

  • Stabiliți și setați implicit variabile de context folosind funcţia UpdateContext sau Navigate. Când aplicația pornește, valoarea inițială a tuturor variabilelor de context este gol.
  • Actualizați variabilele de context cu înregistrări. În alte instrumente de programare, utilizați în mod obișnuit "=" pentru alocare, ca în "x = 1". Pentru variabile de context, utilizați în schimb {x: 1 }. Când utilizați o variabilă de context, folosiți numele acesteia direct fără sintaxa înregistrării.
  • Puteți seta, de asemenea, o variabilă de context atunci când utilizați funcția Navigate pentru a afișa un ecran. Dacă priviți ecranul ca pe un fel de procedură sau subrutină, această abordare seamănă cu parametrii care trec în alte instrumente de programare.
  • În afară de Navigate, variabilele de context sunt limitate la contextul unui singur ecran, care este locul în care își primesc numele. Nu puteți să le utilizați sau să le setați în afara acestui context.
  • Variabilele de context pot conține orice valoare, inclusiv șiruri, numere, înregistrări și tabele.

Să ne reconstruim mașina de adăugare folosind o variabilă de context:

  1. Adăugați un control de introducere text, numit TextInput1 și două butoane, denumite Button1 și Button2.

  2. Setați propietatea Text pentru Buton1 la "Adăugare" și setați proprietatea Text pentru Buton2 la „Golire”.

  3. Pentru a actualiza totalul de rulare de fiecare dată când un utilizator selectează butonul Adăugare, setează proprietatea OnSelect la această formulă:

    UpdateContext( { RunningTotal: RunningTotal + TextInput1.Text } )

    Simpla existență a acestei formule stabilește RunningTotal ca variabilă de context care deține un număr din cauza operatorului +. Puteți face referire la RunningTotal oriunde pe acest ecran. Ori de câte ori utilizatorul deschide această aplicație, RunningTotal are o valoare inițială de gol.

    Prima dată când utilizatorul selectează butonul Adăugare și UpdateContext rulează, RunningTotal este setat la valoare RunningTotal + TextInput1.

    Proprietatea OnSelect a butonului Adaugă.

  4. Pentru a seta totalul de rulare la 0 de fiecare dată când utilizatorul selectează butonul Golire, setează proprietatea OnSelect la această formulă:

    UpdateContext( { RunningTotal: 0 } )

    Din nou, UpdateContext se folosește cu formula UpdateContext ( {RunningTotal: 0 }).

    Proprietatea OnSelect a butonului Clear.

  5. Adăugați un control Label și setați proprietatea Text la RunningTotal.

    Această formulă va fi automat recalculată și va arăta utilizatorului valoarea RunningTotal întrucât se schimbă pe baza butoanelor selectate de utilizator.

    Proprietatea text a etichetei.

  6. Previzualizați aplicația și avem mașina noastră de adăugare așa cum este descris mai sus. Introduceți un număr în caseta de text și apăsați butonul Adăugare de câteva ori. Când este gata, reveniți la experiența de creare cu ajutorul tastei Esc.

    Controlul de introducere a textului arată o valoare, iar eticheta arată totalul de rulare.

  7. Puteți seta valoarea unei variabile de context în timp ce navigați pe un ecran. Acest lucru este util pentru trecerea „contextului” sau „parametrilor” de la un ecran la altul. Pentru a demonstra această tehnică, introduceți un ecran, introduceți un buton și setați proprietatea OnSelect la această formulă:

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

    Proprietatea OnSelect a unui buton.

    Țineți apăsată tasta Alt în timp ce selectați acest buton pentru a fi afișat Screen1 și a se seta variabila de context RunningTotal la -1000.

    Ecranul1 este deschis.

  8. Pentru a afișa valoarea variabilei de context, selectați meniul Fişier apoi selectați Variabile în panoul din stânga.

    Opțiunea Variabile din meniul Fișier.

  9. Pentru a arăta unde este definită și folosită variabila de context, selectați-o.

    Lista locurilor în care este utilizată o variabilă.

Folosiți o colecție

În cele din urmă, să ne uităm la crearea mașinii noastre de adăugare cu o colecție. Întrucât o colecție deține un tabel ușor de modificat, vom face ca această mașină de adăugare să păstreze o „bandă de hârtie” a fiecărei valoare pe măsură ce sunt introduse.

Cum funcționează colecțiile:

  • Creați și setați colecții folosind funcţia ClearCollect. Puteți utiliza funcția Collect în schimb, dar va necesita în mod efectiv o altă variabilă în loc să o înlocuiască pe cea veche.
  • O colecție este un fel de sursă de date și, prin urmare, un tabel. Pentru a accesa o singură valoare dintr-o colecție, utilizați funcția First și extrageți un câmp din înregistrarea rezultată. Dacă ați folosit o singură valoare cu ClearCollect, acesta va fi câmpul Valoare, ca în acest exemplu:
    First(VariableName).Value

Haideți să ne recreăm mașina noastră de adăugare folosind o colecție:

  1. Adăugați un control Text input, numit IntrareText1 și două butoane, denumite Buton1 și Buton2.

  2. Setați propietatea Text pentru Buton1 la "Adăugare" și setați proprietatea Text pentru Buton2 la „Golire”.

  3. Pentru a actualiza totalul de rulare de fiecare dată când un utilizator selectează butonul Adăugare, setează proprietatea OnSelect la această formulă:

    Collect( PaperTape, TextInput1.Text )

    Simpla existență a acestei formule stabilește Banda de hârtie ca o colecție care deține un tabel cu o singură coloană de șiruri de text. Puteți face referire la Banda de hârtie oriunde în această aplicație. Ori de câte ori un utilizator deschide această aplicație, Banda de hârtie este un tabel gol.

    Când rulează această formulă, aceasta adaugă noua valoare la sfârșitul colecției. Pentru că adăugăm o singură valoare, Colectare o plasează automat într-un tabel cu o singură coloană, iar numele coloanei este Valoare, pe care îl veți folosi mai târziu.

    Butonul Adaugă proprietate OnSelect.

  4. Pentru a șterge banda de hârtie când utilizatorul selectează butonul Golire, setați proprietatea OnSelect pentru această formulă:

    Clear( PaperTape )

    Butonul de ștergere a proprietății OnSelect.

  5. Pentru a afișa totalul de rulare, adăugați o etichetă și setați proprietatea sa Text la această formulă:

    Sum( PaperTape, Value )

    Eticheta de proprietate text.

  6. Pentru a rula mașina de adăugat, apăsați F5 pentru a deschide Previzualizare, introduceți numere în controlul de introducere text și selectați butoanele.

    Controlul de introducere a textului arată o valoare, iar eticheta arată totalul de rulare.

  7. Pentru a reveni la spațiul de lucru implicit, apăsați tasta Esc.

  8. Pentru a afișa banda de hârtie, introduceți un control Tabel de date și setați proprietatea Elemente pentru această formulă:

    PaperTape

    În panoul din dreapta, selectați Editare câmpuri și apoi selectați Adăugare câmp, selectați coloana Valoare și apoi selectați Adăugare pentru a o afișa.

    Tabelul de date care arată valorile adăugate la colecție.

  9. Pentru a vedea valorile din colecția dvs., selectați Colecții pe meniul Fişier.

    Previzualizare a colecției PaperTape.

  10. Pentru a stoca și recupera colectia, adăugați două controale buton suplimentare și setați-le proprietățile Text la Încărcare și Salvare. Setați proprietatea OnSelect a butonului Încărcare pentru această formulă:

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

    Trebuie să goliți mai întâi colecția, deoarece LoadData va adăuga valorile stocate la sfârșitul colecției.

    Butonul de încărcare a proprietății OnSelect.

  11. Setați proprietatea OnSelect a butonului Salvare pentru această formulă:

    SaveData( PaperTape, "StoredPaperTape" )

    Butonul de salvare a proprietății OnSelect.

  12. Previzualizați din nou apăsând tasta F5, introduceți numerele în controlul de introducere text și selectați butoanele. Selectați butonul Salvare. Închideți și reîncărcați aplicația și selectați butonul Sarcină pentru reîncărcarea colecției.