IfError- ja IsError-funktiot Power Appsissa

[Tämä artikkeli sisältää julkaisua edeltävää materiaalia ja voi muuttua.]

Havaitsee virheitä ja tarjoaa vaihtoehtoisen arvon tai suorittaa toiminnon.

Huomautus

IfError

IfError-funktio testaa arvoja, kunnes se löytää virheen. Jos toiminto havaitsee virheen, funktio laskee ja palauttaa vastaavan korvaavan arvon ja pysäyttää lisäarvioinnin. Oletusarvo voidaan määrittää silloin, kun virheitä ei löydy. IfError-funktion rakenne muistuttaa If-funktion rakennetta: IfError testaa virheitä, mutta If testaa tosi-arvoja.

Käytä IfError-funktiota, kun haluat korvata virheen kelvollisella arvolla, jotta loppupään laskelmia voidaan jatkaa. Käytä tätä toimintoa esimerkiksi silloin, jos käyttäjän syöte voi aiheuttaa jaon nollalla:

IfError( 1/x, 0 )

Tämä kaava palauttaa 0, jos arvo x on nolla, koska 1/x tuottaisi virheen. Jos x ei ole nolla, palautetaan 1/x.

Lisäkäsittelyn lopettaminen

Kun ketjutetaan kaavoja yhteen käyttäytymisskaavoissa, kuten:

Patch( DS1, ... );
Patch( DS2, ... )

Toista Patch-toimintoa yritetään kohteelle DS2, vaikka Patch kohteelle DS1 epäonnistuisi. Virheen vaikutusalue rajoittuu kuhunkin ketjutettavaan kaavaan.

Käytä IfError-funktiota suorittamaan toiminto ja jatkamaan käsittelyä vain, jos toiminto onnistui. IfError-funktion käyttäminen tässä esimerkissä:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" ),
    Patch( DS2, ... ), Notify( "problem in the second action" )
)

Jos kohteen DS1 Patch-funktiossa on ongelma, ensimmäinen Notify suoritetaan. Jatkokäsittelyä ei tapahdu (Patch kohteelle DS2). Jos ensimmäinen Patch onnistuu, toinen Patch suoritetaan.

Valinnainen DefaultResult-argumentti palautetaan, jos virheitä ei löydetä. Jos argumenttia ei ole, funktio palauttaa viimeisen Value-argumentin.

Edellisen esimerkin pohjalta voidaan tarkistaa IfError-funktion paluuarvo ja selvittää, onko ongelmia:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" );  false,
    Patch( DS2, ... ), Notify( "problem in the second action" ); false,
    true
)

Tyypin yhteensopivuus

IfError palauttaa yhden argumenttinsa arvon. Kaikkien niiden arvojen tyyppien, jotka IfError voi palauttaa, on oltava yhteensopivia.

Viimeisessä esimerkissä Patch palauttaa tietueen, joka ei ole yhteensopiva Replacement-kaavan tai DefaultResult-kohteen totuusarvojen kanssa. Tämä toimii hyvin, koska ei ole mitään tilannetta, jossa paluuarvo näistä Patch-kutuista palautettaisiin IfError-funktiosta.

Huomautus

Vaikka prosessin toiminnallisuus saattaa muuttua, kaikkien IfError-argumentin tyyppien on oltava yhteensopivia tällä hetkellä.

Aiemmin kuvattussa yksinkertaisessa esimerkissä:

IfError( 1/x, 0 )

Kohteiden 1/x ja 0 tyypit olivat yhteensopivia, koska molemmat olivat tekstimerkkijonoja. Jos ne eivät ole, toinen argumentti pakotetaan vastaamaan ensimmäisen argumentin tyyppiä.

Excel näyttää #DIV/0! kun jako nollalla tapahtuu.

Katsotaan IfError-funktiota sen sijaan seuraavassa tilanteessa:

IfError( 1/x, "#DIV/0!" )

Yllä oleva kaava ei toimi. Tekstimerkkijono "#DIV/0!" pakotetaan ensimmäisen IfError-argumentin tyypiksi, joka on numero. IfError-tulos on jälleen yksi virhe, koska tekstimerkkijonoa ei voi pakottaa. Korjaa tilanne ja muunna ensimmäinen argumentti tekstimerkkijonoksi niin, että IfError palauttaa aina tekstimerkkijonon:

IfError( Text( 1/x ), "#DIV/0!" )

Kuten edellä on todettu, IfError voi palauttaa virheen, jos Replacement tai DefaultResult on virhe.

ErrorInfo

Korvaavissa kaavoissa ErrorInfo-tietue sisältää löytyneen virheen tiedot. Tämä tietue sisältää:

ErrorInfo-kenttä Laji Kuvaus
Ohjausobjekti Tekstimerkkijono Nykyisen ohjausobjektin nimi, jonka avulla voidaan raportoida virheen ilmenemistä.
Laji ErrorKind-luettelointi (numero) Luokittelee virheen.
Sanoma Tekstimerkkijono Virhesanoma, joka voidaan näyttää loppukäyttäjälle.
Notify Boolean Jos IfError ei löydä virhettä, näytetäänkö loppukäyttäjän ilmoitus.
Ominaisuus Tekstimerkkijono Nykyisen ominaisuuden nimi, jonka avulla voidaan raportoida virheen ilmenemistä.

Voit esimerkiksi käyttää seuraavaa kaavaa OnSelect-ominaiuudessa Button-ohjausobjektissa:

IfError( 1/0, Notify( "Internal error: " & ErrorInfo.Control & "." & ErrorInfo.Property ) )

Yllä oleva esimerkkikaava näyttää seuraavan ilmoituksen, kun painike aktivoidaan:

Painike-ohjausobjekti aktivoitu, ilmoituksen näyttäminen Notify-toiminnosta

IsError

IsError-funktio testaa virhearvoa. Palautusarvo on totuusarvo true tai false.

IsError-toiminnon käyttäminen estää virheen käsittelemisen edelleen.

Syntaksi

IfError( Value1, Replacement1 [, Value2, Replacement2, ... [, DefaultResult ] ] )

  • Value(s) – Pakollinen. Kaavat virhearvojen testaamiseksi.
  • Replacement(s) – pakollinen. Arvioitavat kaavat ja palautettavat arvot, jos vastaavat Value-argumentit palauttivat virheen.
  • DefaultResult – Valinnainen. Kaavat, joilla arvioidaan, onko kaavassa virheitä.

IsError( Value )

  • Value – Pakollinen. Kaava virhearvojen testaamiseksi.

Esimerkit

Yksinkertainen IfError

Kaava Kuvaus Tulos
IfError( 1, 2 ) Ensimmäinen argumentti ei ole virhe. Toiminnossa ei ole muita tarkistettavia virheitä eikä oletuspalautusarvoa. Funktio palauttaa viimeisen arvioidun Value-argumentin. 1
IfError( 1/0, 2 ) Ensimmäinen argumentti palauttaa virhearvon (jakolasku nollalla). Funktio laskee toisen argumentin ja palauttaa sen tuloksena. 2
IfError( 10, 20, 30 ) Ensimmäinen argumentti ei ole virhe. Toiminnossa ei ole muita tarkistettavia virheitä, mutta siinä on oletuspalautusarvo. Funktio palauttaa DefaultResult-argumentin. 30
IfError( 10, 11, 20, 21, 300 ) Ensimmäinen argumentti 10 ei ole virhe, joten funktio ei arvioi kyseisen argumentin korvaavaa arvoa 11. Kolmas argumentti 20 ei myöskään ole virhe, joten funktio ei arvioi kyseisen argumentin korvaavaa arvoa 21. Viidennessä argumentissa 300 ei ole vastaavaa korvausta, ja se on oletustulos. Funktio palauttaa kyseisen tuloksen, koska kaavassa ei ole virheitä. 300
IfError( 1/0, Notify( "There was an internal problem" ) ) Ensimmäinen argumentti palauttaa virhearvon (jakolasku nollalla). Funktio arvioi toisen argumentin ja käyttäjälle näytetään viesti. IfError-funktion palautusarvo on Notify-funktion palautusarvo, joka on pakotettu samantyyppiseksi kuin ensimmäinen argumentti funktioon IfError (luku). 1

Yksinkertainen IsError

Kaava Kuvaus Tulos
IsError( 1 ) Argumentti ei ole virhe. false
IsError( 1/0 ) Argumentti on virhe. true
If( IsError( 1/0 ), Notify( "There was an internal problem" ) ) IsError-argumentti palauttaa virhearvon (jakolasku nollalla). Tämä toiminto palauttaa arvon tosi, jolloin If näyttää käyttäjälle viestin Notify-funktion avulla. If-funktion palautusarvo on Notify-funktion palautusarvo, joka on pakotettu samantyyppiseksi kuin ensimmäinen argumentti funktioon If (totuusarvo). true

Vaihe vaiheelta

  1. Lisää Tekstisyöte-ohjausobjekti ja anna sille nimeksi TextInput1, jos tämä ei ole sen oletusnimi.

  2. Lisää Nimi-ohjausobjekti ja anna sille nimeksi Label1, jos tämä ei ole sen oletusnimi.

  3. Määritä Label1:n Text-ominaisuuden kaavaksi:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. Kirjoita TextInput1-kohtaan 1234.

    Label1 näyttää arvon 1234, koska tämä on kelvollinen syöte Value-funktioon.

  5. Kirjoita TextInput1-kohtaan ToInfinity.

    Label1 näyttää arvon -1, koska tämä ei ole kelvollinen syöte Value-funktioon. Jos Value-funktiota ei rivitettäisi IfError-funktion kanssa, otsikko ei näyttäisi arvoa, koska virhearvoa kohdellaan tyhjänä.

Katso myös

Kaavaviittaus Power Appsia varten