Partajați prin


Update și UpdateIf funcții

Se aplică la: Aplicații pânză bazate pe modele de aplicații

Actualizează înregistrările într-o sursă de date.

Descriere

Update funcționa

Utilizați funcția Update pentru a înlocui o întreagă înregistrare dintr-o sursă de date. În schimb, UpdateIf funcțiile Corecție modifică una sau mai multe valori dintr-o înregistrare, lăsând celelalte valori în pace.

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

UpdateIf funcționa

Utilizați funcția UpdateIf pentru a modifica una sau mai multe valori dintr-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 și funcția Patch pentru a modifica anumite coloane ale unei înregistrări fără a afecta alte coloane.

Ambele Update și UpdateIf returnează sursa de date modificată ca tabel. Trebuie să utilizați oricare dintre funcții în cadrul unei formule comportamentale.

Delegare

Aceste funcții nu delegă o sursă de date. Cu toate acestea, UpdateIf și RemoveIf funcționează local pentru a simula delegarea până la o limită de 500/2000 înregistrări. Acestea aduc treptat înregistrări peste limita nelegației de 500/2000 de înregistrări. Înregistrările care îndeplinesc condiția If sunt colectate. În general, maximum 500/2000 se colectează separat, apoi se modifică pentru fiecare execuție. Cu toate acestea, pot fi actualizate mai multe înregistrări dacă memoria cache de date locală existentă este mare, deoarece funcția poate avea acces la mai multe înregistrări pentru evaluare. Numai porțiunea inițială a sursei de date va fi regăsită, apoi va fi aplicată funcția. Aceasta poate să nu reprezinte imaginea completă. Poate apărea un avertisment în timpul creării, pentru a vă reaminti această limitare.

Sintaxă

Update(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ă și proprietățile lipsă conțin necompletate.
  • 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_, Condiție1, ModificareÎnregistrare1 [, Condiție2, ModificareÎnregistrare2, ... ] )

  • 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ă. În cazul în care sunt transmise mai multe condiții , se aplică doar ModificareÎnregistrare legată de prima condiție care se evaluează ca adevărat .
  • 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:

Exemplu de înghețată.

Formula Descriere Rezultat
Update( IceCream,
LookUp( IceCream, Aroma="ciocolată" ), { ID: 1, Aroma: "Ciocolată de mentă", Cantitate:150 } )
Înlocuiește o înregistrare din sursa de date. Înlocuiți o înregistrare.

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

Sursa de date IceCream a fost modificată.
Update( IceCream,
LookUp( IceCream, Aroma="Căpșuni" ),
{ ID: 3, Aroma: "Vârtej de căpșuni"} )
Î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.