Κοινοποίηση μέσω


Συνάρτηση Errors

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

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

Επισκόπηση

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

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

  • Κάθε μία από αυτές τις συναρτήσεις επιστρέφει μια τιμή σφάλματος ως αποτέλεσμα της λειτουργίας. Errors μπορεί να εντοπιστεί με το 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 Εντοπίστηκε ένα γενικό πρόβλημα επικύρωσης, το οποίο δεν ταιριάζει με ένα από τα άλλα είδη.

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

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

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

Σύνταξη

Errors( DataSource [, Record ] )

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

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

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

Σε αυτό το παράδειγμα, θα εργαστούμε με την προέλευση δεδομένων IceCream , μια προέλευση δεδομένων για την οποία το Power Apps θα επιχειρήσει να εντοπίσει διενέξεις:

Παγωτό.

Σημείωμα

Το Power Apps δεν επιχειρεί να εντοπίσει διενέξεις για αλλαγές σε πίνακες Dataverse.

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

  • UpdateContext( { EditRecord: LookUp( Παγωτό, Γεύση = "Σοκολάτα" ) } )

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

  • Patch (παγωτό, 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 )). Μήνυμα

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

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