Partajați prin


Funcțiile Update și UpdateIf

Se aplică pentru: planșă de lucru aplicații 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.

Sprijin pentru delegare (experimental)

Suportul de delegare pentru UpdateIf și RemoveIf este acum în Experimental versiune preliminară (dezactivat implicit) pentru sursele de date care îl acceptă. 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, 2000 sau 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.
  • Condition(s) – 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ă.
  • ChangeRecord(s) – 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:

Exemplu de înghețată.

Formula Descriere Rezultat
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Înlocuiește o înregistrare din sursa de date. Înlocuiți o înregistrare.

Sursa de date IceCream a fost modificată.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 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. Modificați înregistrările.

Sursa de date IceCream a fost modificată.
Update( IceCream,
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. Înlocuiți înregistrarea când cantitatea nu este furnizată.

Sursa de date IceCream a fost modificată.
UpdateIf( IceCream, true, { Quantity: 0 } ) Setează valoarea proprietății Quantity pentru toate înregistrările din sursa de date la 0. Setați cantitatea pentru toate la 0.

Sursa de date IceCream a fost modificată.

Pas cu pas

  1. 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.

  2. Denumiți galeria ProductGallery.

  3. Adăugați un glisor numit UnitsSold și setați proprietatea Max conform următoarei expresii:
    ProductGallery.Selected.UnitsInStock

  4. Adăugați un buton, apoi setați proprietatea OnSelect la această formulă:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. 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.