Errors-funktio

Soveltuu: Pohjaan perustuvat sovellukset Mallipohjaiset sovellukset

Antaa tietolähteen edellisiin muutoksiin liittyviä virhetietoja.

Yleiskatsaus

Virheitä voi tapahtua, kun tietolähteen tietuetta muutetaan. Tähän voi olla useita syitä, kuten verkkokatkokset, riittämättömät käyttöoikeudet ja muokkausristiriidat.

Tietolähteitä muokkaavat funktiot, kuten Patch, Collect, Remove, RemoveIf, Update, UpdateIf ja SubmitForm raportoivat virheistä kahdella tavalla:

  • Jokainen näistä toiminnoista palauttaa toiminnon tuloksena virhearvon. Virheitä voidaan havaita funktion IsError avulla ja korvata tai hiljentää funktioiden IfError ja App.OnError avulla tavalliseen tapaan. Lisätietoja on kohdassa Virheiden käsittely.
  • Toiminnon jälkeen funktio Errors palauttaa myös edellisten toimintojen virheet. Tästä voi olla hyötyä virheen näyttämisessä lomakenäytössä eikä virhettä tarvitse siepata tilamuuttujasta.

Voit välttää joitakin virheitä, ennen kuin ne tapahtuvat, käyttämällä Validate- ja DataSourceInfo-funktioita. Katso lisäehdotuksia siitä, miten virheitä käsitellään ja vältetään, aiheesta tietolähteiden käsitteleminen.

Kuvaus

Errors-funktio palauttaa virheiden taulukon, joka sisältää seuraavat sarakkeet:

  • Record. Tietolähteessä oleva tietue, jossa virhe ilmeni. Jos virhe ilmeni tietueen luonnin aikana, tämä sarake on tyhjä.
  • Sarake Sarake, joka aiheutti virheen, jos virheen voidaan katsoa johtuneen yhdestä sarakkeesta. Jos ei, tämä on tyhjä.
  • Message. Virheen kuvaus. Tämä virhemerkkijono voidaan näyttää loppukäyttäjälle. Huomioi, että tietolähde saattaa muodostaa tämän viestin ja se voi olla pitkä ja sisältää raakoja sarakkeiden nimiä, jotka eivät ehkä merkitse käyttäjälle mitään.
  • Error. Virhekoodi, jota voidaan käyttää kaavoissa ratkaisemaan virhe:
ErrorKind Kuvaus
ErrorKind.Conflict Toinen muutos tehtiin samaan tietueeseen, mikä aiheutti muutosristiriidan. Lataa tietue uudestaan Refresh-funktiolla ja yritä tehdä muutos uudelleen.
ErrorKind.ConstraintViolation Yhtä tai useampaa rajoitusta on rikottu.
ErrorKind.CreatePermission Tietue yritettiin luoda, eikä nykyisellä käyttäjällä ole tietueiden luontioikeutta.
ErrorKind.DeletePermission Tietue yritettiin poistaa, eikä nykyisellä käyttäjällä ole tietueiden poisto-oikeutta.
ErrorKind.EditPermission Tietuetta yritettiin muokata, eikä nykyisellä käyttäjällä ole tietueiden muokkausoikeutta.
ErrorKind.GeneratedValue Tietolähteen automaattisesti luomaa saraketta yritettiin muuttaa.
ErrorKind.MissingRequired Pakollisen sarakkeen arvo puuttuu tietueesta.
ErrorKind.None Ei virhettä.
ErrorKind.NotFound Tietuetta yritettiin muokata tai se yritettiin poistaa, mutta tietuetta ei löytynyt. Toinen käyttäjä on ehkä muuttanut tietuetta.
ErrorKind.ReadOnlyValue Vain luettavaa saraketta yritettiin muuttaa.
ErrorKind.Sync Tietolähde ilmoitti virheestä. Lisätietoja on Message-sarakkeessa.
ErrorKind.Unknown Ilmeni virhe, mutta sen laji on tuntematon.
ErrorKind.Validation Havaittiin yleinen vahvistusongelma, joka ei sopinut mihinkään muuhun lajiin.

Virheitä voidaan palauttaa koko tietolähteestä tai vain valitusta rivistä antamalla funktiolle Record-argumentti.

Patch tai jokin toinen datafunktio saattaa palauttaa blank-arvon, jos esimerkiksi tietuetta ei voitu luoda. Voit välittää tyhjän arvon Errors-funktiolle, ja se palauttaa asianmukaiset virhetiedot näissä tapauksissa. Datafunktioiden seuraava käyttökerta samalla tietolähteellä tyhjentää nämä virhetiedot.

Jos virheitä ei ole, taulukko, jonka Errors palauttaa, on tyhjä ja sitä voidaan testata IsEmpty-funktiolla.

Syntaksi

Errors( DataSource [, Record ] )

  • DataSource – Pakollinen. Tietolähde, jolle haluat palauttaa virheitä.
  • Record – Valinnainen. Tietty tietue, jolle haluat palauttaa virheitä. Jos et määritä tätä argumenttia, funktio palauttaa virheitä koko tietolähteelle.

Esimerkit

Vaihe vaiheelta

Tässä esimerkissä käytämme IceCream-tietolähdettä:

Ice Cream

Sovelluksessa käyttäjä lataa Chocolate-tietueen tietolomakkeeseen ja muuttaa sitten Quantity-arvoksi luvun 90. Työstettävä tietue sijoitetaan kontekstimuuttujaanEditRecord:

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

Tämä muutos tehdään tietolähteeseen Patch-funktiolla:

  • Patch( IceCream, EditRecord, Gallery.Updates )

jossa Gallery.Updates saa arvon { Quantity: 90 }, koska vain Quantity-ominaisuutta on muokattu.

Valitettavasti, juuri ennen kuin Patch-funktio käynnistettiin, joku muu muutti Chocolate-tietueen Quantity-arvoksi luvun 80. Power Apps tunnistaa tämän eikä salli ristiriitaista muutosta. Voit tarkistaa tällaisen tilanteen seuraavalla kaavalla:

  • IsEmpty( Errors( IceCream, EditRecord ) )

joka palauttaa epätoden, koska Errors-funktio palautti seuraavan taulukon:

Tietue Sarake Sanoma Virhe
{ Flavor: "Chocolate", Quantity: 100 } blank ”Toinen käyttäjä on muokannut tietuetta, jota yrität muokata. Lataa tietue uudestaan ja yritä uudelleen.” ErrorKind.Conflict

Voit sijoittaa lomakkeeseen selitteen, joka näyttää tämän virheen käyttäjälle.

  • Näytä virhe määrittämällä selitteen Text-ominaisuudeksi tämä kaava:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Voit myös lisätä Lataa uudelleen -painikkeen lomakkeeseen, jotta käyttäjä voi ratkaista ristiriidan tehokkaasti.

  • Näytä painike vain, kun ristiriita on esiintynyt, määrittämällä painikkeen Visible-ominaisuudeksi seuraava kaava:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Kumoa muutos, kun käyttäjä valitsee painikkeen, määrittämällä sen OnSelect-ominaisuudeksi seuraava kaava:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )