Συνάρτηση Errors

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

Παρέχει πληροφορίες σφάλματος για προηγούμενες αλλαγές σε μια προέλευση δεδομένων.

Επισκόπηση

Όταν μια καρτέλα μιας προέλευσης δεδομένων αλλάζει, μπορεί να παρουσιαστούν σφάλματα. Οι αιτίες είναι πολυάριθμες και περιλαμβάνουν διακοπές του δικτύου, ανεπαρκή δικαιώματα και διενέξεις επεξεργασίας.

Οι συναρτήσεις που τροποποιούν δεδομένα σε προελεύσεις δεδομένων, όπως Patch, Collect, Remove, RemoveIf, Update, UpdateIf, και SubmitForm αναφέρουν σφάλματα με δύο τρόπους:

  • Καθεμία από αυτές τις συναρτήσεις θα επιστρέψει μια τιμή σφάλματος ως αποτέλεσμα της λειτουργίας. Τα σφάλματα μπορούν να ανιχνευθούν με το IsError και να αντικατασταθούν ή να ματαιωθούν με το IfError και το App.OnError ως συνήθως. Δείτε τον Χειρισμό σφαλμάτων για περισσότερες πληροφορίες.
  • Μετά τη λειτουργία, η συνάρτηση Errors θα επιστρέψει επίσης τα σφάλματα για προηγούμενες λειτουργίες. Αυτό μπορεί να είναι χρήσιμο για την εμφάνιση του μηνύματος σφάλματος σε μια οθόνη φόρμας χωρίς να χρειάζεται να καταγράψετε το σφάλμα σε μια μεταβλητή κατάστασης.

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

Περιγραφή

Η συνάρτηση Errors επιστρέφει έναν πίνακα σφαλμάτων που περιέχει τις εξής στήλες:

  • Καρτέλα. Η καρτέλα στην προέλευση δεδομένων που παρουσίασε το σφάλμα. Εάν το σφάλμα παρουσιάστηκε κατά τη δημιουργία μιας καρτέλας, η στήλη αυτή θα είναι κενή.
  • Στήλη. Η στήλη που ευθύνεται για το σφάλμα, εάν το σφάλμα μπορεί να αποδοθεί σε μια μεμονωμένη στήλη. Διαφορετικά, θα είναι κενό.
  • Μήνυμα. Μια περιγραφή του σφάλματος. Αυτή η συμβολοσειρά σφάλματος μπορεί να εμφανιστεί για τον τελικό χρήστη. Έχετε υπόψη ότι αυτό το μήνυμα μπορεί να δημιουργηθεί από την προέλευση δεδομένων και μπορεί να είναι μεγάλο και να περιέχει απλά ονόματα στηλών που ενδέχεται να μην έχουν κάποια σημασία για τον χρήστη.
  • Σφάλμα. Ένας κωδικός σφάλματος που μπορεί να χρησιμοποιηθεί σε τύπους για την επίλυση του σφάλματος:
ErrorKind Περιγραφή
ErrorKind.Conflict Μια άλλη αλλαγή που πραγματοποιήθηκε στην ίδια καρτέλα, οδηγώντας σε μια διένεξη αλλαγής. Χρησιμοποιήστε τη συνάρτηση Refresh για να φορτώσετε ξανά την καρτέλα και επιχειρήστε να εκτελέσετε πάλι την αλλαγή.
ErrorKind.ConstraintViolation Έχουν παραβιαστεί ένας ή περισσότεροι περιορισμοί.
ErrorKind.CreatePermission Έγινε μια προσπάθεια δημιουργίας μιας καρτέλας και ο τρέχων χρήστης δεν διαθέτει δικαίωμα δημιουργίας καρτελών.
ErrorKind.DeletePermission Έγινε μια προσπάθεια διαγραφής μιας καρτέλας και ο τρέχων χρήστης δεν διαθέτει δικαίωμα διαγραφής καρτελών.
ErrorKind.EditPermission Έγινε μια προσπάθεια επεξεργασίας μιας καρτέλας και ο τρέχων χρήστης δεν διαθέτει δικαίωμα επεξεργασίας καρτελών.
ErrorKind.GeneratedValue Έγινε μια προσπάθεια αλλαγής μιας στήλης που δημιουργεί αυτόματα η προέλευση δεδομένων.
ErrorKind.MissingRequired Η τιμή μιας υποχρεωτικής στήλης απουσιάζει από την καρτέλα.
ErrorKind.None Δεν υπάρχει σφάλμα.
ErrorKind.NotFound Έγινε μια προσπάθεια επεξεργασίας ή διαγραφής μιας καρτέλας, όμως η καρτέλα δεν βρέθηκε. Ένας άλλος χρήστης μπορεί να έχει αλλάξει την καρτέλα.
ErrorKind.ReadOnlyValue Έγινε μια προσπάθεια αλλαγής μιας στήλης που είναι μόνο για ανάγνωση.
ErrorKind.Sync Αναφέρθηκε ένα σφάλμα από την προέλευση δεδομένων. Ελέγξτε τη στήλη "Μήνυμα" για περισσότερες πληροφορίες.
ErrorKind.Unknown Υπήρξε ένα σφάλμα, αλλά ήταν αγνώστου είδους.
ErrorKind.Validation Εντοπίστηκε ένα γενικό πρόβλημα επικύρωσης, όμως δεν αντιστοιχεί σε ένα από τα άλλα είδη.

Σφάλματα μπορεί να επιστρέψουν για ολόκληρη την προέλευση δεδομένων ή μόνο για μια επιλεγμένη γραμμή, παρέχοντας το όρισμα καρτέλα στη συνάρτηση.

Η συνάρτηση Patch ή άλλη συνάρτηση δεδομένων μπορεί να επιστρέψει μια κενή τιμή εάν, για παράδειγμα, δεν ήταν δυνατή η δημιουργία μιας καρτέλας. Μπορείτε να διαβιβάσετε το κενό στη συνάρτηση Errors και θα επιστρέψει κατάλληλες πληροφορίες σφαλμάτων για τις περιπτώσεις αυτές. Η μετέπειτα χρήση των συναρτήσεων δεδομένων στην ίδια προέλευση δεδομένων θα καταργήσει αυτές τις πληροφορίες σφαλμάτων.

Εάν δεν υπάρχουν σφάλματα, ο πίνακας που επιστρέφει η συνάρτηση Errors θα είναι κενός και μπορεί να ελεγχθεί με τη συνάρτηση IsEmpty.

Σύνταξη

Errors( DataSource [, Record ] )

  • DataSource – Υποχρεωτικό. Η προέλευση δεδομένων για την οποία θέλετε να επιστρέψετε σφάλματα.
  • Record - Προαιρετικό. Μια συγκεκριμένη καρτέλα για την οποία θέλετε να επιστρέψετε σφάλματα. Εάν δεν καθορίσετε αυτό το όρισμα, η συνάρτηση επιστρέφει σφάλματα για ολόκληρη την προέλευση δεδομένων.

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

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

Για αυτό το παράδειγμα, θα εργαστούμε με την προέλευση δεδομένων IceCream:

Παγωτό.

Μέσω της εφαρμογής ο χρήστης φορτώνει την καρτέλα "Chocolate" σε μια φόρμα καταχώρησης δεδομένων και, στη συνέχεια, αλλάζει την τιμή Quantity σε 90. Η καρτέλα που θα χρησιμοποιηθεί τοποθετείται στη μεταβλητή περιβάλλοντοςEditRecord:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )

Για να γίνει αυτή η αλλαγή στην προέλευση δεδομένων, χρησιμοποιείται η συνάρτηση Patch:

  • Patch( IceCream, EditRecord, Gallery.Updates )

όπου Gallery.Updates αποδίδει { Quantity: 90 }, καθώς μόνο η ιδιότητα Quantity έχει τροποποιηθεί.

Δυστυχώς, μόλις πριν την κλήση της συνάρτησης Patch, κάποιος άλλος τροποποίησε την ιδιότητα Quantity για "Chocolate" σε 80. Το Power Apps θα το εντοπίσει και δεν θα επιτρέψει την πραγματοποίηση της αλλαγής σε διένεξη. Μπορείτε να ελέγξετε την κατάσταση αυτή με τον τύπο:

  • IsEmpty( Errors( IceCream, EditRecord ) )

που επιστρέφει false, καθώς η συνάρτηση Errors επέστρεψε τον παρακάτω πίνακα:

Καρτέλα Στήλη Μήνυμα Σφάλμα
{ Flavor: "Chocolate", Quantity: 100 } κενό "Ένας άλλος χρήστης τροποποίησε την καρτέλα που επιχειρείτε να τροποποιήσετε. Φορτώστε πάλι την καρτέλα και προσπαθήστε ξανά." ErrorKind.Conflict

Μπορείτε να τοποθετήσετε μια ετικέτα στη φόρμα για να παρουσιάσετε αυτό το σφάλμα στον χρήστη.

  • Για να παρουσιάσετε το σφάλμα, ορίστε την ιδιότητα Text της ετικέτας σε αυτόν τον τύπο:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Μπορείτε, επίσης, να προσθέσετε ένα κουμπί Reload στη φόρμα, ώστε ο χρήστης να μπορεί αποτελεσματικά να επιλύσει τη διένεξη.

  • Για να εμφανίσετε το κουμπί μόνο όταν προκύπτει μια διένεξη, ορίστε την ιδιότητα Visible του κουμπιού σε αυτόν τον τύπο:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Για να επαναφέρετε την αλλαγή στην οποία ο χρήστης επιλέγει το κουμπί, ορίστε την ιδιότητά της OnSelect σε αυτόν τον τύπο:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )