Errors-funktio
Koskee seuraavia: 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:
- Ennätys. 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ä.
- Viesti. 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.
- Virhe. 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 muu datafunktio voi palauttaa tyhjän 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
Virheet( tietolähde [, tietue ])
- Tietolähde – 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ä:
Sovelluksessa käyttäjä lataa Chocolate-tietueen tietolomakkeeseen ja muuttaa sitten Quantity-arvoksi luvun 90. Työstettävä tietue sijoitetaan kontekstimuuttujaan EditRecord:
- UpdateContext( { EditRecord: LookUp( Jäätelö, maku = "suklaa") } )
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( Virheet( IceCream, EditRecord ) )
joka palauttaa epätoden, koska Errors-funktio palautti seuraavan taulukon:
Tietue | Sarake | Sanoma | Virhe |
---|---|---|---|
{ Flavor: "Chocolate", Quantity: 100 } | aihio | ”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 = ensimmäinen(Virheet( IceCream, EditRecord )). Viesti
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( Haku( Virheet( IceCream, EditRecord), Virhe = ErrorKind.Conflict ) ) - Kumoa muutos, kun käyttäjä valitsee painikkeen, määrittämällä sen OnSelect-ominaisuudeksi seuraava kaava:
ReloadButton.OnSelect = palauttaa( Jäätelö, EditRecord )