Funcțiile Update și UpdateIf
Se aplică pentru: planșă de lucru apps Aplicații bazate pe model
Actualizează înregistrările într-o sursă de date.
Descriere
Funcția Update
Utilizați funcția Update pentru a înlocui o întreagă înregistrare într-o sursă de date. În schimb, funcțiile UpdateIf și Patch modifică una sau mai multe valori dintr-o înregistrare, lăsând neschimbate celelalte valori.
Pentru o colecție, întreaga înregistrare trebuie să se potrivească. Colecțiile permit înregistrări dublate, deci mai multe înregistrări s-ar putea potrivi. Puteți utiliza argumentul RemoveFlags.All pentru a actualiza toate copiile unei înregistrări; în caz contrar, o singură copie a înregistrării este actualizată.
Dacă sursa de date generează automat o valoare a unei coloane, valoarea acestei coloane trebuie reafirmată.
Funcția UpdateIf
Folosiți funcția UpdateIf pentru a modifica una sau mai multe valori într-una sau mai multe înregistrări care corespund uneia sau mai multor condiții. Condiția poate fi orice formulă care generează un rezultat true sau false și poate face referire la coloanele sursei de date după nume. Funcția evaluează condiția pentru fiecare înregistrare și modifică orice înregistrare pentru care rezultatul este true.
Pentru a specifica o modificare, utilizați o înregistrare a modificării care conține valori de proprietate noi. Dacă furnizați această modificare a înregistrării în linie cu acolade, formulele de proprietate pot face referire la proprietățile înregistrării care este modificată. Puteți utiliza acest comportament pentru a modifica înregistrările pe baza unei formule.
Similar cu UpdateIf, puteți utiliza, de asemenea, funcția Patch pentru a schimba coloane specifice ale unei înregistrări fără a afecta alte coloane.
Atât Update, cât și UpdateIf returnează sursa de date modificată ca un tabel. Trebuie să utilizați oricare dintre funcții în cadrul unei formule comportamentale.
Delegare
Când sunt utilizate cu un sursă de date, aceste funcții nu pot fi delegate. Doar prima porțiune a sursei de date va fi regăsită, apoi se va aplica funcția. Este posibil să nu reprezinte povestea completă. Este posibil să apară un avertisment în momentul creării pentru a vă aminti această limitare.
Sprijinul delegațiilor
Doar unele surse de date acceptă UpdateIf. Dacă un sursă de date nu acceptă această caracteristică, Power Apps va trimite acum o interogare către server și va prelua toate datele care se potrivesc cu expresia filtrului până la maximum 500 sau 2000 sau cu dimensiunea paginii de date. Apoi, va actualiza acele înregistrări și le va trimite înapoi pe server pentru a fi actualizate.
Sintaxă
Actualizare( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )
- DataSource – Obligatoriu. Sursa de date care conține înregistrarea pe care doriți să o înlocuiți.
- OldRecord – Obligatoriu. Înregistrarea de înlocuit.
- NewRecord – Obligatoriu. Înregistrarea înlocuirii. Aceasta nu este o înregistrare de modificare. Întreaga înregistrare este înlocuită, iar proprietățile care lipsesc vor conține un spațiu necompletat.
- RemoveFlags.All – Opțional. Într-o colecție, aceeași înregistrare poate apărea de mai multe ori. Specificați argumentul RemoveFlags.All pentru a actualiza toate copiile înregistrării.
UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )
- DataSource – Obligatoriu. Sursa de date care conține înregistrarea sau înregistrările pe care doriți să le modificați.
- Condiții – Obligatoriu. O formulă care generează evaluarea true pentru înregistrarea sau înregistrările pe care doriți să le modificați. Puteți utiliza numele coloanelor DataSource în formulă.
- ChangeRecords - Obligatoriu. Pentru fiecare condiție corespunzătoare, o înregistrare de modificare a valorilor noi ale proprietății se aplică la înregistrările DataSource care satisfac condiția. Dacă furnizați înregistrarea în linie folosind acolade, valorile proprietății înregistrării existente pot fi utilizate în formulele proprietății.
Exemple
În aceste exemple, veți înlocui sau modifica înregistrările într-o sursă de date numită IceCream care începe cu datele din acest tabel:
Formula | Descriere | Rezultat |
---|---|---|
Actualizare (înghețată, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Înlocuiește o înregistrare din sursa de date. | Sursa de date IceCream a fost modificată. |
UpdateIf( Înghețată, Cantitate > 175, { Cantitate: Cantitate + 10 } ) | Modifică înregistrările care au o cantitate mai mare decât 175. Câmpul Quantity este incrementat cu 10 și nu sunt modificate alte câmpuri. | Sursa de date IceCream a fost modificată. |
Actualizare (înghețată, First( Filter( IceCream, Flavor="Strawberry" ) ), { ID: 3, Flavor: "Strawberry Swirl"} ) |
Înlocuiește o înregistrare din sursa de date. Proprietatea Quantity nu a fost furnizată în registrul de înlocuire, astfel încât rezultatul proprietății va fi necompletat. | Sursa de date IceCream a fost modificată. |
UpdateIf( IceCream, true, { Cantitate: 0 } ) | Setează valoarea proprietății Quantity pentru toate înregistrările din sursa de date la 0. | Sursa de date IceCream a fost modificată. |
Pas cu pas
Importați sau creați o colecție numită Inventar și afișați-o într-o galerie, conform descrierii din Afișați date într-o galerie.
Denumiți galeria ProductGallery.
Adăugați un glisor numit UnitsSold și setați proprietatea Max conform următoarei expresii:
ProductGallery.Selected.UnitsInStockAdăugați un buton, apoi setați proprietatea OnSelect la această formulă:
UpdateIf(Inventar, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})Apăsați F5, selectați un produs din galerie, specificați o valoare cu glisorul, apoi selectați butonul.
Numărul de unități din stoc pentru produsul pe care l-ați specificat scade cu cantitatea specificată de dvs.