Funktsioon Tõrked rakenduses Power Apps

Pakub tõrgetega seotud teavet andmeallikas varasemate muudatuste kohta.

Ülevaade

Tõrked võivad juhtuda, kui muudetakse andmeallika kirjet. Paljud põhjused on võimalikud, sh võrgu katkestused, ebapiisavad õigused ja muudatuste vastuolud.

Funktsiooni Patch ja muud andmete funktsioonid ei tagasta tõrkeid otse. Selle asemel tagastavad nad oma tegevuse tulemi. Pärast andmete funktsiooni käivitamist saate funktsiooni Tõrked kasutada mis tahes tõrgete üksikasjade hankimiseks. Tõrgete olemasolu saate kontrollida funktsiooniga [IsEmpty] valemis IsEmpty( Errors ( ... ) ).

Saate vältida tõrkeid, enne kui need juhtuvad, kasutades fuktsioone Validate ja DataSourceInfo. Vt andmeallikatega töötamine, et teada saada, kuidas töötada andmeallikatega ja vältida tõrkeid.

Kirjeldus

Funktsioon Tõrked tagastab tõrgete tabeli, mis sisaldab järgmisi veerge:

  • Kirje. Andmeallika kirje, millel oli tõrge. Kui kirje loomise ajal ilmnes tõrge, on see veerg tühi.
  • Veerg. Tõrget põhjustanud veerg, kui tõrget saab seostada ühe veeruga. Kui mitte, on see tühi.
  • Sõnum. Tõrke kirjeldus. Selle tõrke stringi saab kuvada lõppkasutaja jaoks. Pange tähele, et selle sõnumi võib luua andmeallikas ja see võib olla pikk ning sisaldada tooreid veergude nimesid, millel ei pruugi olla mingit tähendust kasutajale.
  • Tõrge. Tõrkekood, mida saab kasutada tõrgete lahendamiseks valemites.
ErrorKind Kirjeldus
ErrorKind.Conflict Teine muutus tehti samale samale kirjele, mille tulemuseks on muudatuste vastuolu. Kasutage funktsiooni Refresh (Värskenda) kirje laadimiseks ja proovige siis uuesti muuta.
ErrorKind.ConstraintViolation Rikutud on ühte või mitut piirangut.
ErrorKind.CreatePermission Tehti katse luua kirjet ja praegusel kasutajal pole kirjete loomiseks õigust.
ErrorKind.DeletePermission Tehti katse kustutada kirjet ja praegusel kasutajal pole kirjete kustutamise õigust.
ErrorKind.EditPermission Tehti katse muuta kirjet ja praegusel kasutajal pole kirjete muutmise õigust.
ErrorKind.GeneratedValue Tehti katse muuta veergu, mille andmeallikas automaatselt genereerib.
ErrorKind.MissingRequired Kirjest puudub nõutava veeru väärtus.
ErrorKind.None Tõrkeid pole.
ErrorKind.NotFound Prooviti kirjet redigeerida või kustutada, kuid kirjet ei leitud. Võimalik, et mõni teine kasutaja on kirjet muutnud.
ErrorKind.ReadOnlyValue Tehti katse muuta veergu, mis on kirjutuskaitstud.
ErrorKind.Sync Andmeallikas teatas tõrkest. Vaadake lisateavet veerust Sõnum.
ErrorKind.Unknown Ilmnes tõrge, kuid tundmatut tüüpi.
ErrorKind.Validation Tuvastati üldine valideerimise probleem, mis ei sobinud mõne muu tüübiga.

Tõrkeid saab tagastada kogu andmeallika või ainult valitud rea jaoks, pakkudes Kirje argumenti funktsioonile.

Patch või mõni muu andmefunktsioon võib tagastada väärtuse blank, kui näiteks kirjet ei saanud luua. Saate edastada tühja Tõrgetele ja see tagastab neil juhtudel sobiva tõrketeabe. Andmefunktsioonide edasine kasutamine samal andmeallikal kustutab selle tõrke teabe.

Kui tõrkeid pole, on tabel, mille funktsioon Tõrked tagastab tühi ja seda saab katsetada funktsiooniga IsEmpty.

Süntaks

Errors( DataSource [, Record ] )

  • DataSource – nõutav. Andmeallikas, mille jaoks soovite tõrkeid tagastada.
  • Kirje – valikuline. Teatud kirje, mille jaoks soovite tõrkeid tagastada. Kui te seda argumenti ei määra, tagastab funktsioon tõrked kogu andmeallikas.

Näited

Samm-sammult

Selles näites töötame andmeallikaga IceCream:

Jäätis.

Rakenduse kaudu laadib kasutaja kirje Šokolaad andmesisestuse vormi ja seejärel muudab Koguse väärtuseks 90. Kirje, millega soovite töötada, paigutatakse konteksti muutujasseEditRecord.

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

Kui soovite selle muudatuse andmeallikas teha, kasutage funktsiooni Patch.

  • Patch( IceCream, EditRecord, Gallery.Updates )

kus Gallery.Updates võrdub { Quantity: 90 }, kuna ainult atribuuti Quantity on muudetud.

Kahjuks, just enne funktsiooni Patch käivitamist, muudab keegi teine Šokolaadi koguse Quantity 80-ks. Power Apps tuvastab selle ja ei luba vastuolulistel muudatustel esineda. Saate seda olukorda kontrollida järgmise valemi abil.

  • IsEmpty( Errors( IceCream, EditRecord ) )

mis tagastab väärtuse väär, sest funktsioon Tõrked tagastas järgmise tabeli:

Kirje Veerg Teade Tõrge
{ Flavor: "Chocolate", Quantity: 100 } tühi Mõni teine kasutaja on muutnud kirjet, mida proovite muuta. Laadige kirje ja proovige uuesti. ErrorKind.Conflict

Saate panna vormile sildi, mis näitab seda tõrget kasutajale.

  • Tõrke kuvamiseks määrake sildi atribuut Text sellele valemile.
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Vormile saate lisada ka nupu Laadi uuesti, nii et kasutaja saab konflikti tõhusalt lahendada.

  • Nupu kuvamiseks ainult konflikti tekkimisel seadke nupu atribuut Nähtav sellele valemile.
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Kui soovite ennistada muudatuse, mille kasutaja valib nupu abil, määrake selle OnSelect atribuut sellele valemile.
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )