Funkcije IfError, IsError, IsBlankOrError u Power Apps

[Ovaj je članak dokumentacija predizdanja i podložan je promjenama.]

Otkriva pogreške i pruža alternativnu vrijednost ili poduzima mjere.

Napomena

IfError

Funkcija IfError testira vrijednosti dok ne nađe pogrešku. Ako ova funkcija otkrije pogrešku, procjenjuje i vraća odgovarajuću zamjensku vrijednost i zaustavlja daljnju procjenu. Zadana vrijednost može se dobiti i ako se ne pronađu pogreške. Struktura funkcije IfError nalikuje onoj kod funkcije If: IfError ispituje ima li pogrešaka, dok If ispituje ima li vrijednosti true.

Upotrijebite funkciju IfError kako biste zamijenili pogrešku s valjanom vrijednošću tako da se mogu nastaviti proračuni nizvodno. Na primjer, koristite ovu funkciju ako korisnikov unos može rezultirati dijeljenjem s nulom:

IfError( 1/x, 0 )

Ta formula vraća 0 ako je vrijednost x nula jer će 1/x proizvesti pogrešku. Ako x nije nula, tada se vraća 1/x.

Zaustavljanje daljnje obrade

Prilikom ulančavanja formula zajedno u formulama ponašanja, kao što su:

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

Druga funkcija Patch za DS2 pokušat će se čak i ako Patch za DS1 ne uspije. Djelokrug pogreške ograničen je na svaku ulančanu formulu.

Upotrijebite funkciju IfError kako biste izveli neku radnju i nastavili obradu samo ako je radnja bila uspješna. Primjena funkcije IfError na ovaj primjer:

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

Ako Patch za DS1 naiđe na problem, izvršava se prva funkcija Notify. Ne dolazi do daljnje obrade, uključujući i drugu funkciju Patch za DS2. Ako prva funkcija Patch uspije, izvršit će se druga funkcija Patch.

Ako postoji, neobvezni argument DefaultResult vraća se ako nisu otkrivene pogreške. Kada nema ovog argumenta, vraća se posljednji argument Value.

Nadovezujući se na zadnji primjer, povratna vrijednost funkcije IfError može se provjeriti kako bi se vidjelo je li bilo problema:

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

Kompatibilnost vrste

Funkcija IfError vratit će vrijednost jednog od njezinih argumenata. Vrste svih vrijednosti koje funkcija IfError može vratiti moraju biti kompatibilne.

U posljednjem primjeru, funkcija Patch vratit će zapis koji nije kompatibilan s Booleovim vrijednostima korištenim za formule Replacement ili DefaultResult. To je u redu jer ne postoji situacija u kojoj bi funkcija IfError vratila povratnu vrijednost od ovih poziva funkcije Patch.

Napomena

Dok je ponašanje u procesu za promjenu, vrste svih argumenata za IfError trenutačno moraju biti kompatibilne.

U ranije opisanom jednostavnom primjeru:

IfError( 1/x, 0 )

Vrste 1/x i 0 kompatibilne su jer su bile brojevi. Ako nisu, drugi argument će se prilagoditi tako da odgovara vrsti prvog argumenta.

Excel će pokazati #DIV/0! kada dođe do dijeljenja s nulom.

Razmotrite IfError sa sljedećim umjesto toga:

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

Gornja formula neće raditi. Tekstni niz "#DIV/0!" bit će prilagođen vrsti prvog argumenta za funkciju IfError, koji predstavlja broj. Rezultat funkcije IfError bit će još jedna pogreška jer se tekstni niz ne može prilagoditi. Riješite to pretvaranjem prvog argumenta u tekstni niz da bi funkcija IfError uvijek vraćala tekstni niz:

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

Kao što se vidi gore, funkcija IfError može vratiti pogrešku ako funkcija Replacement ili DefaultResult daje pogrešku.

FirstError / AllErrors

Unutar zamjenskih formula zapis tablice FirstError i AllErrors pruža informacije o svim pronađenim greškama. Zapisi uključuju sljedeće:

Polje FirstError Tip Opis
Vrsta Numerička vrijednost ErrorKind (broj) Kategorizira pogrešku.
Poruka Tekstni niz Poruka o pogrešci, prikladna za prikazivanje krajnjem korisniku.
Izvor Tekstni niz Lokacija u formatu ControlName. PropertyName gdje je greška nastala, što se upotrebljava za prijavu.
Zapaženo Tekstni niz Lokacija u formatu ControlName.PropertyName gdje se greška prikazala korisniku, što se upotrebljava za prijavu.

Na primjer, razmotrite sljedeću formulu kao svojstvo OnSelect kontrole Button:

Set( a, 1/0 )

I ta formula u svojstvu OnSelect druge kontrole Gumb:

IfError( a, Notify( "Internal error: originated on " & FirstError.Source & ", surfaced on " & FirstError.Observed ) )

Gornji primjer formule prikazuje sljedeći natpis ako se dva gumba aktiviraju redom:

Aktivirana je kontrola Button, koja prikazuje obavijest iz funkcije Notify.

U pravilu, ako izraz rezultira pogreškom, bit će jedini. Ali postoje scenariji u kojima se može vratiti više pogrešaka, na primjer, ako se upotrebljava operator za lančano povezivanje formule ili funkcija Concurrent. U tim slučajevima aplikacija može koristiti tablicu AllErrors čiji zapisi imaju ista polja kao zapis FirstError za reagiranje na pogreške.

IsError

Funkcija IsError ispituje postoji li vrijednost pogreške.

Povratna vrijednost je Booleovo true ili false.

Upotreba funkcije IsError spriječit će daljnju obradu pogreške.

IsBlankOrError

Funkcija IsBlankOrError testira praznu vrijednost ili vrijednost pogreške i ekvivalent je Or( IsBlank( X ), IsError( X ) ).

Kada omogućavate postupanje s pogreškama za postojeće aplikacije, razmislite o zamjeni IsBlank s IsBlankOrError radi očuvanja postojećeg ponašanja aplikacije. Prije dodavanja postupanja s pogreškama, vrijednost prazno korištena je za predstavljanje null vrijednosti iz baza podataka i vrijednosti pogrešaka. Postupanje s pogreškama razdvaja ove dvije interpretacije praznog što bi moglo promijeniti ponašanje postojećih aplikacija koje i dalje koriste IsBlank.

Povratna je vrijednost Booleovo true ili false.

Korištenje IsBlankOrError spriječit će daljnju obradu pogreške.

Sintaksa

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

  • Vrijednosti – Required. Formula za ispitivanje ima li vrijednosti pogreške.
  • Replacement(s) – Required. Formule za procjenu i vrijednosti koje se vraćaju ako su podudarajući argumenti Value vratili pogrešku.
  • DefaultResult – Neobvezno. Formule za procjenu ako formula ne nađe nikakve pogreške.

IsError( Value )
IsBlankOrError( Vrijednost )

  • Value – Obvezno. Formula za testiranje.

Primjeri

Jednostavna upotreba funkcije IfError

Formula Opis Rezultat
IfError( 1, 2 ) Prvi argument nije pogreška. Funkcija nema drugih pogrešaka za provjeru i nema zadanu povratnu vrijednost. Funkcija vraća posljednji procijenjeni argument Value. 1
IfError( 1/0, 2 ) Prvi argument vraća vrijednost pogreške (zbog dijeljenja s nulom). Funkcija procjenjuje drugi argument i vraća ga kao rezultat. 2
IfError( 10, 20, 30 ) Prvi argument nije pogreška. Funkcija nema drugih pogrešaka za provjeru, ali ima zadanu povratnu vrijednost. Funkcija vraća argument DefaultResult. 30
IfError( 10, 11, 20, 21, 300 ) Prvi argument 10 nije pogreška, pa funkcija ne procjenjuje odgovarajuću zamjenu argumenta 11. Ni treći argument 20 nije pogreška, pa funkcija ne procjenjuje odgovarajuću zamjenu argumenta 21. Peti argument 300 nema odgovarajuću zamjenu i zadani je rezultat. Funkcija vraća taj rezultat jer formula ne sadrži pogreške. 300
IfError( 1/0, Notify( "There was an internal problem" ) ) Prvi argument vraća vrijednost pogreške (zbog dijeljenja s nulom). Funkcija procjenjuje drugi argument i prikazuje poruku korisniku. Povratna vrijednost funkcije IfError povratna je vrijednost funkcije Notify, prilagođena tako da bude iste vrste kao prvi argument za IfError (broj). 1

Jednostavna upotreba funkcije IsError

Formula Opis Rezultat
IsError( 1 ) Argument nije pogreška. pogrešno
IsError( Prazno() ) Argument je prazan, ali nije i pogreška. pogrešno
IsError( 1/0 ) Argument je pogreška. true
If( IsError( 1/0 ), Notify( "There was an internal problem" ) ) Argument funkcije IsError vraća vrijednost pogreške (zbog dijeljenja s nulom). Ova funkcija vraća true što uzrokuje da If korisniku prikazuje poruku s funkcijom Notify. Povratna vrijednost funkcije If povratna je vrijednost funkcije Notify, prilagođena tako da bude iste vrste kao prvi argument za If (Booleova vrijednost). true

Simple IsBlankOrError

Formula Opis Rezultat
IsBlankOrError( 1 ) Argument nije pogreška ili prazan. pogrešno
IsBlankOrErrro( Prazno() ) Argument je prazan. true
IsBlankOrError( 1/0 ) Argument je pogreška. true

Korak po korak

  1. Dodajte kontrolu Text input i nazovite je TextInput1 ako to već nije zadano ime.

  2. Dodajte kontrolu Label i nazovite je Label1 ako to već nije zadano ime.

  3. Postavite formulu za svojstvo Text kontrole Label1 na:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. U TextInput1 unesite 1234.

    Label1 će pokazati vrijednost 1234 jer ovo je valjani unos u funkciju Value.

  5. U TextInput1 unesite ToInfinity.

    Label1 će pokazati vrijednost -1 jer ovo nije valjani unos u funkciju Value. Bez omatanja funkcije Value funkcijom IfError, oznaka ne bi pokazala vrijednost jer se vrijednost pogreške tretira kao prazno.

Pogledajte također

Referenca formule za Power Apps