Partajați prin


Errors funcționa

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

Oferă informații despre eroare pentru modificările anterioare la o sursă de date.

Prezentare generală

Errors se poate întâmpla atunci când se modifică o înregistrare a unei surse de date. Sunt posibile multe cauze, inclusiv întreruperi din rețea, permisiuni inadecvate și conflicte de editare.

Funcțiile care modifică sursele de date, ca Corecție, Colectare, Înlăturare, RemoveIf, Actualizare, UpdateIf și SubmitForm raportează erori în două moduri:

  • Fiecare dintre aceste funcții returnează o valoare de eroare ca rezultat al operațiunii. Errors pot fi detectate cu IsError și înlocuite sau suprimate cu IfError și App.OnError , ca de obicei. Pentru mai multe informații, consultați Manipulare erori.
  • După operațiune, funcția va returna Errors , de asemenea, erorile pentru operațiunile anterioare. Poate fi util pentru afișarea mesajului de eroare pe un ecran de formular fără a fi necesar să capturați eroarea într-o variabilă de stare.

Puteți evita unele erori înainte ca acestea să se producă folosind funcțiile Validate și DataSourceInfo. Consultați lucrul cu surse de date pentru mai multe sugestii despre cum să lucrați cu erorile și să le evitați.

Descriere

Funcția Errors returnează un tabel de erori care conține următoarele coloane:

  • Înregistra. Înregistrarea din sursa de date care a întâmpinat eroarea. Dacă eroarea a apărut în timpul creării unei înregistrări, această coloană este necompletată.
  • Coloană. Coloana care a cauzat eroarea, dacă eroarea poate fi atribuită unei singure coloane. Dacă nu, este necompletată.
  • Mesaj. O descriere a erorii. Acest șir de eroare poate fi afișat pentru utilizatorul final. Acest mesaj poate fi generat de sursa de date și poate fi lung și conține nume de coloane brute care pot să nu aibă nicio semnificație pentru utilizator.
  • Eroare. Un cod de eroare care poate fi utilizat în formule pentru a ajuta la rezolvarea erorii:
ErrorKind Descriere
ErrorKind.Conflict Altă modificare a fost făcută la aceeași înregistrare, rezultând un conflict de modificare. Utilizați funcția Refresh pentru a reîncărca înregistrarea și încercați din nou să modificați.
ErrorKind.ConstraintViolation Au fost încălcate una sau mai multe constrângeri.
ErrorKind.CreatePermission S-a încercat crearea unei înregistrări, iar utilizatorul curent nu are permisiunea de a crea înregistrări.
ErrorKind.DeletePermission S-a încercat ștergerea unei înregistrări, iar utilizatorul curent nu are permisiunea de a șterge înregistrări.
ErrorKind.EditPermission S-a încercat editarea unei înregistrări, iar utilizatorul curent nu are permisiunea de a edita înregistrări.
ErrorKind.GeneratedValue S-a încercat modificarea unei coloane pe care sursa de date o generează automat.
ErrorKind.MissingRequired Valoarea unei coloane necesare lipsește din înregistrare.
ErrorKind.None Nu există nicio eroare.
ErrorKind.NotFound S-a încercat modificarea sau ștergerea unei înregistrări, dar înregistrarea nu a putut fi găsită. Este posibil ca alt utilizator să fi schimbat înregistrarea.
ErrorKind.ReadOnlyValue S-a încercat modificarea unei coloane care este doar în citire.
ErrorKind.Sync Sursă de date a raportat o eroare. Pentru mai multe informații verificați coloana Mesaje.
ErrorKind.Necunoscut A existat o eroare, dar de un tip necunoscut.
ErrorKind.Validare A fost detectată o problemă de validare generală, care nu se potrivește unuia dintre celelalte tipuri.

Errors se poate returna pentru întreaga sursă de date sau numai pentru un rând selectat, furnizând argumentul Înregistrare funcției.

Plasture sau o altă funcție de date poate returna a necompletat valoare dacă, de exemplu, o înregistrare nu a putut fi creată. Puteți să treceți necompletat la Errorsși să returnați informații de eroare corespunzătoare în aceste cazuri. Utilizarea ulterioară a funcțiilor de date pe aceeași sursă de date șterge aceste informații despre eroare.

Dacă nu există erori, tabelul care Errors returnează va fi gol și poate fi testat cu funcția IsEmpty .

Sintaxă

Errors( Sursă de date [, Înregistrare ] )

  • DataSource – Obligatoriu. Sursa de date pentru care doriți să returnați erori.
  • Înregistra – Opțional. O anumită înregistrare pentru care doriți să returnați erori. Dacă nu specificați acest argument, funcția returnează erori pentru întreaga sursă de date.

Exemple

Pas cu pas

Pentru acest exemplu, vom lucra cu sursa de date IceCream , o sursă de date pentru care Power Apps va încerca să detecteze conflicte:

Înghețată.

Notă

Power Apps nu încearcă să detecteze conflicte pentru modificările din tabelele Dataverse.

Prin intermediul aplicației, un utilizator încarcă înregistrarea Ciocolată într-un formular de introducere a datelor și modifică apoi valoarea Cantitate la 90. Înregistrarea cu care trebuie lucrat este plasată în variabila de contextEditRecord:

  • UpdateContext( { Editare înregistrare: Căutare (înghețată, aromă = „ciocolată”) } )

Pentru a face această modificare în sursă de date, este utilizată funcția Patch:

  • Patch (IceCream, EditRecord, Gallery.Updates)

Unde Galerie.Updates se evaluează la { Cantitate: 90 }, deoarece doar proprietatea Cantitate a fost modificată.

Din păcate, chiar înainte să fi fost invocată funcția Patch altcineva efectuează modificarea aferentă Cantității pentru Ciocolată la 80. Deoarece aceasta este o sursă de date acceptată pentru detectarea conflictelor, Power Apps va detecta acest lucru și nu va permite apariția modificării conflictuale. Puteți verifica această situație cu formula:

  • IsEmpty( Errors( IceCream, EditRecord ) )

Ceea ce returnează fals, deoarece funcția Errors a returnat următorul tabel:

Record Coloană Mesaj Eroare
{ Aromă: "Ciocolată", Cantitate: 100 } necompletat "Un alt utilizator a modificat înregistrarea pe care încercați să o modificați. Reîncărcați înregistrarea și încercați din nou." ErrorKind.Conflict

Puteți plasa o etichetă pe formular pentru a afișa această eroare utilizatorului.

  • Pentru a afișa eroare, setați proprietatea etichetei Text la această formulă:
    Label.Text = First(Errors( IceCream, EditRecord )). Mesaj

Puteți adăuga, de asemenea, un buton Reîncărcare de pe formular, astfel încât utilizatorul să poată rezolva eficient conflictul.

  • Pentru a afișa butonul doar atunci când a avut loc un conflict, setați butonul Vizibil pentru această formulă:
    ! IsEmpty( Căutare( Errors( IceCream, EditRecord ), Eroare = ErrorKind.Conflict ) )
  • Pentru a readuce modificarea, pe care utilizatorul o selectează butonul, setați proprietatea OnSelect la această formulă:
    ReloadButton.OnSelect = reveni( IceCream, EditRecord )