Συναρτήσεις Update και UpdateIf

Ισχύει σε: Εφαρμογές καμβά Εφαρμογές βάσει μοντέλου

Ενημερώνει τις εγγραφές σε μια προέλευση δεδομένων.

Description

Συνάρτηση Update

Χρησιμοποιήστε τη συνάρτηση Update για να αντικαταστήσετε μια ολόκληρη εγγραφή σε μια προέλευση δεδομένων. Αντίθετα, οι συναρτήσεις UpdateIf και Patch τροποποιούν μία ή περισσότερες τιμές σε μια εγγραφή, αφήνοντας άθικτες τις άλλες τιμές.

Για μια συλλογή, πρέπει να συμφωνεί ολόκληρη η εγγραφή. Οι συλλογές επιτρέπουν διπλότυπες εγγραφές, επομένως ενδέχεται να συμφωνούν πολλές εγγραφές. Μπορείτε να χρησιμοποιήσετε το όρισμα RemoveFlags.All για να ενημερώσετε όλα τα αντίγραφα μιας εγγραφής, διαφορετικά, ενημερώνεται μόνο ένα αντίγραφο της εγγραφής.

Εάν η προέλευση δεδομένων δημιουργεί αυτόματα μια τιμή στήλης, η τιμή αυτής της στήλης πρέπει να επιβεβαιωθεί ξανά.

Συνάρτηση UpdateIf

Χρησιμοποιήστε τη συνάρτηση UpdateIf για να τροποποιήσετε μία ή περισσότερες τιμές σε μία ή περισσότερες εγγραφές που πληρούν μία ή περισσότερες συνθήκες. Η συνθήκη μπορεί να είναι οποιοσδήποτε τύπος που έχει ως αποτέλεσμα τιμή true ή false και μπορεί να αναφέρεται σε στήλες της προέλευσης δεδομένων με βάση το όνομα. Η συνάρτηση αξιολογεί τη συνθήκη για κάθε εγγραφή και τροποποιεί τις καρτέλες για τις οποίες το αποτέλεσμα είναι true.

Για να καθορίσετε μια τροποποίηση, χρησιμοποιήστε μια εγγραφή αλλαγής που περιέχει νέες τιμές ιδιοτήτων. Εάν παρέχετε αυτή την εγγραφή αλλαγής ενσωματωμένη με άγκιστρα, οι τύποι ιδιοτήτων μπορεί να αναφέρουν ιδιότητες της καρτέλας που τροποποιείται. Μπορείτε να χρησιμοποιήσετε αυτή τη συμπεριφορά για να τροποποιήσετε τις εγγραφές με βάση έναν τύπο.

Παρόμοια με τη συνάρτηση UpdateIf, μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση Patch για να αλλάξετε συγκεκριμένες στήλες μιας εγγραφής, χωρίς να επηρεάζονται άλλες στήλες.

Οι συναρτήσεις Update και UpdateIf επιστρέφουν αμφότερες την τροποποιημένη προέλευση δεδομένων ως πίνακα. Πρέπει να χρησιμοποιήσετε οποιαδήποτε από τις δύο συναρτήσεις σε έναν τύπο συμπεριφοράς.

Ανάθεση

Όταν χρησιμοποιούνται με προέλευση δεδομένων, αυτές οι λειτουργίες δεν μπορούν να ανατεθούν. Θα ανακτηθεί μόνο το πρώτο μέρος της προέλευσης δεδομένων και, στη συνέχεια, θα εφαρμοστεί η λειτουργία. Το αποτέλεσμα μπορεί να μην αντιπροσωπεύει το πλήρες ιστορικό. Ενδέχεται να εμφανιστεί μια προειδοποίηση κατά το χρόνο σύνταξης για να σας υπενθυμίσει αυτόν τον περιορισμό.

Υποστήριξη ανάθεσης (Πειραματική)

Η υποστήριξη ανάθεσης για το UpdateIf και το RemoveIf βρίσκεται τώρα στην Πειραματική έκδοση προεπισκόπησης (προεπιλογή OFF) για προελεύσεις δεδομένων που την υποστηρίζουν. Εάν μια προέλευση δεδομένων δεν υποστηρίζει αυτήν τη δυνατότητα, το Power Apps θα στείλει τώρα ένα ερώτημα στο διακομιστή και θα ανακτήσει όλα τα δεδομένα που ταιριάζουν στην έκφραση φίλτρου έως το μέγιστο είτε 500, 2000 είτε στο μέγεθος της σελίδας δεδομένων. Στη συνέχεια, θα ενημερώσει αυτές τις καρτέλες και θα στείλει όλες τις καρτέλες στο διακομιστή για ενημέρωση.

Σύνταξη

Update( DataSource, OldRecord, NewRecord [, RemoveFlags.All ] )

  • DataSource – Υποχρεωτικό. Η προέλευση δεδομένων που περιέχει τις εγγραφές που θέλετε να αντικαταστήσετε.
  • OldRecord – Υποχρεωτικό. Η εγγραφή προς αντικατάσταση.
  • NewRecord – Υποχρεωτικό. Η εγγραφή αντικατάστασης. Αυτή δεν είναι μια εγγραφή αλλαγής. Αντικαθίσταται ολόκληρη η εγγραφή και οι ιδιότητες που λείπουν θα περιέχουν κενό.
  • RemoveFlags.All – Προαιρετικό. Σε μια συλλογή, η ίδια εγγραφή μπορεί να εμφανίζεται περισσότερες από μία φορές. Μπορείτε να προσθέσετε το όρισμα RemoveFlags.All για να καταργήσετε όλα τα αντίγραφα της εγγραφής.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – Υποχρεωτικό. Η προέλευση δεδομένων που περιέχει την εγγραφή ή τις εγγραφές που θέλετε να τροποποιήσετε.
  • Condition(s) - Υποχρεωτικό. Ένας τύπος που αποδίδει true για την εγγραφή ή τις εγγραφές που θέλετε να τροποποιήσετε. Μπορείτε να χρησιμοποιήσετε τα ονόματα των στηλών από το όρισμα DataSource στον τύπο.
  • ChangeRecord(s) – Υποχρεωτικό. Για κάθε αντίστοιχη συνθήκη, μια εγγραφή αλλαγής των νέων τιμών ιδιοτήτων που εφαρμόζεται σε εγγραφές του ορίσματος DataSource που πληρούν τη συνθήκη. Εάν παρέχετε την εγγραφή ενσωματωμένη χρησιμοποιώντας άγκιστρα, οι τιμές ιδιοτήτων της υπάρχουσας εγγραφής μπορούν να χρησιμοποιηθούν στους τύπους ιδιότητας.

Παραδείγματα

Σε αυτά τα παραδείγματα, θα αντικαταστήσετε ή θα καταργήσετε εγγραφές σε μια προέλευση δεδομένων που ονομάζεται IceCream και ξεκινά με τα δεδομένα του παρακάτω πίνακα:

Παράδειγμα παγωτού.

Τύπος Περιγραφή Αποτέλεσμα
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Αντικαθιστά μια εγγραφή από την προέλευση δεδομένων. Αντικατάσταση καρτέλας.

Η προέλευση δεδομένων IceCream έχει τροποποιηθεί.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Τροποποιεί τις εγγραφές που έχουν Quantity μεγαλύτερη από 175. Το πεδίο Quantity αυξάνεται κατά 10 και δεν τροποποιούνται άλλα πεδία. Τροποποίηση καρτελών.

Η προέλευση δεδομένων IceCream έχει τροποποιηθεί.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Αντικαθιστά μια εγγραφή από την προέλευση δεδομένων. Η ιδιότητα Quantity δεν έχει παρασχεθεί στην εγγραφή αντικατάστασης, επομένως, η ιδιότητα θα είναι κενή στο αποτέλεσμα. Αντικατάσταση καρτέλας όταν δεν παρέχεται ποσότητα.

Η προέλευση δεδομένων IceCream έχει τροποποιηθεί.
UpdateIf( IceCream, true, { Quantity: 0 } ) Ορίζει την τιμή της ιδιότητας Quantity για όλες τις εγγραφές στην προέλευση δεδομένων σε 0. Ορισμός ποσότητας για όλα σε 0.

Η προέλευση δεδομένων IceCream έχει τροποποιηθεί.

Βήμα προς βήμα

  1. Εισαγάγετε ή δημιουργήστε μια συλλογή με όνομα Inventory και εμφανίστε τη σε μια συλλογή όπως περιγράφεται στο θέμα Εμφάνιση δεδομένων σε μια συλλογή.

  2. Ονομάστε τη συλλογή ProductGallery.

  3. Προσθέστε ένα ρυθμιστικό με την ονομασία UnitsSold και ορίστε την ιδιότητά του Max στην εξής παράσταση:
    ProductGallery.Selected.UnitsInStock

  4. Προσθέστε ένα κουμπί και ορίστε την ιδιότητα OnSelect σε αυτόν τον τύπο:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Πατήστε το πλήκτρο F5, επιλέξτε ένα προϊόν στη συλλογή, καθορίστε μια τιμή με το ρυθμιστικό και, στη συνέχεια, επιλέξτε το κουμπί.

    Ο αριθμός των μονάδων σε απόθεμα για το προϊόν που έχετε καθορίσει μειώνεται κατά το ποσό που έχετε καθορίσει.