Partekatu bidez


Error, IfError, IsError, IsBlankOrError funtzioak

Funtzioak Honi dagokio
Error
IfError
IsError
Mihise-aplikazioak Copilot Studio Mahaigaineko fluxuak Dataverse formula zutabeak Model-driven apps Power Platform CLI Dataverse funtzioak Power Pages
IsBlankOrError Mihise-aplikazioak Copilot Studio Mahaigaineko fluxuak Ereduetan oinarritutako aplikazioak Power Platform CLI Dataverse funtzioak Power Pages

Akatsak hauteman eta balio alternatiboa ematen du edo neurriak hartzen ditu. Sortu errore pertsonalizatu bat edo pasa errore bat.

Oharra

Aplikazio batek Formula-mailako erroreen kudeaketa eginbidea desgaitu badu Ezarpenak>Eguneratzeak> Erretiratuta, funtzio horiek ez dira behar bezala funtzionatuko.

IfError

Funtzioak IfError balioak aztertzen ditu errore bat aurkitu arte. Funtzioak errore bat aurkitzen badu, funtzioak ebaluatu eta dagokion ordezko balioa itzultzen du eta ebaluazio gehiago gelditzen ditu. Balio lehenetsia ere eman daiteke erroreak aurkitzen ez direnean. Egitura IfErrorIf funtzioaren antzekoa da: IfError akatsak probatzen ditu, eta Ifegiazkoa.

Erabili IfError errore bat baliozko balio batekin ordezkatzeko, beheranzko kalkuluak jarraitu ahal izateko. Adibidez, erabili funtzio hau erabiltzailearen sarrerak zeroz zatitzea eragin dezake:

IfError( 1/x, 0 )

Formula honek 0 itzultzen du x ren balioa zero bada, 1/x k errore bat sortzen baitu. x ez bada zero 1/x itzultzen da.

Prozesu gehiago gelditzea

Formulak elkarrekin kateatzean sartu portaera-formulak, hala nola:

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

Bigarren Patch funtzioa DS2 ere saiatuko da PatchDS1 huts egin du. Errore baten irismena kateatzen den formula bakoitzera mugatzen da.

Erabili IfError ekintza bat egiteko eta prozesatzen jarraitzeko ekintza arrakastatsua izan bada. Adibide honi aplikatuz IfError :

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

Bada PatchDS1 arazo bat du, lehena Jakinarazi exekutatu da. Bigarrena ere ez da prozesatzen PatchDS2. Lehen Patch arrakasta badu, bigarren Patch exekutatuko du.

Hornitzen bada, aukerakoa DefaultResult argumentua itzuliko da akatsik aurkitzen ez bada. Argudio hori gabe, azkena Balioa argumentua itzuli da.

Azken adibidean oinarrituta, itzulitako IfError balioa egiaztatu daiteke arazorik egon den ala ez jakiteko:

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

Moten bateragarritasuna

IfError Bere argumentuetako baten balioa itzultzen du. Itzul daitezkeen balio guztien IfError motak bateragarriak izan behar dira.

Azken adibidean, AdabakiakOrdezkapen formuletarako erabiltzen diren boolearrekin bateragarria ez den erregistroa itzultzen du. edo DefaultResult. Hori ondo, ez baitago egoerarik Patch dei horien itzulitako balioa itzuliko litzatekeenik IfError.

Oharra

Bitartean portaera prozesuan aldaketa bat, motak argumentu guztiak bateragarriak IfError izan behar gaur egun.

Lehen deskribatutako adibide bakarrean:

IfError( 1/x, 0 )

Motak 1/x eta 0 bateragarriak ziren biak zenbakiak ziren bezala. Hala ez bada, bigarren argumentua behartzen da lehen argumentuaren motarekin bat etor dadin.

Excel-ek #DIV/0! zeroren zatiketa gertatzen denean erakusten du.

Kontuan hartu IfError ondorengoa:

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

Goiko formulak ez du funtzionatzen. Testu-katea "#DIV/0!" lehenengo argumentuaren motara behartuta, hau IfErrorda, zenbaki bat. Emaitza beste IfError errore bat da, testu-katea ezin baita behartu. Konponbide gisa, bihurtu lehenengo argumentua testu-kate batean, beti testu-kate bat itzultzeko IfError :

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

Goian ikusi bezala, IfError errore bat itzul dezake Replacement edo DefaultResult errorea bada.

LehenengoaErrorea / Errore guztiak

Ordezko formulen barruan, aurkitutako erroreei buruzko informazioa erabilgarri dago FirstError erregistroak eta AllErrors taularen bidez. AllErrors erroreen informazio-erregistroen taula bat da, eta FirstError taula honetako lehen erregistrorako lasterbidea da. FirstError k First( AllErrors )ren balio bera ematen du beti.

Error Erregistroak honako hauek dira:

Eremua Idatzi Deskribapenak
Jatorra ErrorKind zenbakitzea (zenbakia) Errorearen kategoria.
Mezua Testu-katea Erroreari buruzko mezua, azken erabiltzaileari bistaratzeko egokia.
Iturria Testu-katea Akatsa sortu den kokapena, txostena egiteko erabiltzen dena. Adibidez, kontrol-propietate bati loturiko formula baterako, balio hau ControlName.PropertyName forman dago.
Behatua Testu-katea Kokapena errorea erabiltzaileari azaleratzen zaionean, salatzeko erabiltzen da. Adibidez, kontrol-propietate bati loturiko formula baterako, balio hau ControlName.PropertyName forman dago.
Xehetasunak Grabatu Erroreari buruzko xehetasunak. Une honetan, sareko akatsetarako soilik ematen dira xehetasunak. Erregistro honek HttpStatusCode HTTP egoera-kodea eta HttpResponse erantzun-ren gorputza barne hartzen ditu. konektorea edo zerbitzua.

Adibidez, hurrengo formula Button kontrola gisa erabilita OnSelect propietatean:

Set( a, 1/0 )

Eta formula hau OnSelect bigarren Botoia kontrolean:

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

Goiko adibidearen formulak honako botoia bistaratuko luke bi botoiak sekuentzialki aktibatzen direnean:

Botoien kontrola aktibatuta dago, jakinarazpen funtzioaren jakinarazpena erakusten duena.

Normalean, errore bakarra egongo da FirstError rekin nahikoa lan egin dezakeena. Hala ere, hainbat errore itzul daitezkeen eszenatokiak daude. Adibidez, formula kateatzeko operadorea edo Aldibereko funtzioa erabiltzean. Egoera hauetan ere, FirstError salatzea nahikoa izan daiteke arazo bat agerian uzteko, erabiltzailea errore ugarirekin gainkargatu beharrean. Errore bakoitza banan-banan lan egiteko eskakizuna baduzu oraindik, AllErrors taula erabil dezakezu.

IsError

Funtzioak IsError errore-balio bat egiaztatzen du.

Itzuleraren balioa boolear bat da egia edo faltsua.

Erabiltzeak IsError errorea gehiago prozesatzea eragozten du.

IsBlankOrError

Funtzioak IsBlankOrError balio huts bat edo errore-balio bat probatzen du, eta Or( IsBlank( X ), IsError( X ) ).

Lehendik dauden aplikazioen erroreen kudeaketa gaitzean, kontuan hartu IsBlank ordezkatzea IsBlankOrError lehendik dagoen aplikazioaren portaera mantentzeko. Erroreen kudeaketa gehitu aurretik, hutsik balioa erabiltzen zen datu-baseetako balio nuluak eta errore-balioak adierazteko. Error manipulazioak blank-en bi interpretazio hauek bereizten ditu, eta horrek IsBlank erabiltzen jarraitzen duten lehendik dauden aplikazioen portaera alda dezake.

Itzuleraren balioa boolear bat da egia edo faltsua.

Erabiltzeak IsBlankOrError errorea gehiago prozesatzea eragozten du.

Erabili funtzioa Error errore pertsonalizatu bat sortzeko eta jakinarazteko. Esate baterako, baliteke balio jakin bat zure testuingururako baliozkoa den ala ez zehazteko logika izatea, arazoren bat automatikoki egiaztatu ez den zerbait. Zure errorea sortu eta itzul dezakezu, Mota eta Mezua erabiliz, funtziorako goian IfError deskribatutako erregistro bera erabiliz.

Testuinguruan, IfErrorerabili funtzioa Error errore bat berriro botatzeko edo pasatzeko. Adibidez, zure logikak IfError erabaki dezake kasu batzuetan errore bat segurtasunez ez ikusi daitekeela, baina beste kasu batzuetan garrantzitsua da errorea bidaltzea. Within IfError edo App.OnError, erabili Error( FirstError ) errore bat igarotzeko.

Funtzioari erroreen taula bat ere pasa dakioke, ErrorAllErrors taulan aurkituko litzatekeen bezala. Erabili Error( AllErrors ) errore guztiak berriro botatzeko eta ez lehenengoa bakarrik.

Erregistro huts batek edo taula huts batek ez du Error errorerik eragiten.

Sintaxia

Error( ErrorRecord )
Error( Errore-taula )

  • ErrorRecord – Beharrezkoa. Error informazio-erregistroa, Mota eta Mezua eta bestelako eremuak barne. Mota beharrezkoa da. FirstError zuzenean pasa daiteke.
  • ErrorTable – Beharrezkoa. Erroreen informazio-erregistroen taula. Akats guztiak zuzenean pasa daitezke.

IfError( Balioa1, Ordezkoa1 [, Balioa2, Ordezpena2, ... [, LehenetsiaEmaitza ] ] )

  • Balioak – Beharrezkoa. Errorearen balioa probatzeko formulak.
  • Ordezkoak – Beharrezkoa. Bat datozenean ebaluatzeko eta balioesteko formulak Balioa argumentuek errore bat itzuli dute.
  • DefaultResult – Aukerakoa. Formulak akatsik aurkitzen ez duen ebaluatzeko formulak.

IsError( Balioa )
IsBlankOrError( Balioa )

  • Balioa – Beharrezkoa. Probatzeko formula.

Adibideak

Sinplea IfError

Formula Deskribapenak Emaitza
IfError( 1, 2 ) Lehenengo argumentua ez da errorea. Funtzioak ez du beste akatsik egiaztatu eta itzultzeko balio lehenetsirik. Funtzioak azkena itzultzen du balioa argumentua ebaluatu da. 1
IfError( 1/0, 2 ) Lehenengo argumentuak errore balioa itzultzen du (zero zatituta dagoelako). Funtzioak bigarren argumentua ebaluatzen du eta emaitza gisa itzultzen du. 2
IfError( 10, 20, 30 ) Lehenengo argumentua ez da errorea. Funtzioak ez du beste akatsik baina itzultzeko balio lehenetsi bat du. Funtzioak itzultzen du DefaultResult argumentua. 30
IfError( 10, 11, 20, 21, 300 ) Lehenengo argumentua 10 errorea ez da, beraz funtzioak ez du argumentu hori dagokion ordezkoa ebaluatzen 11. Hirugarren argumentua 20 errorea ez da, beraz funtzioak ez du argumentu hori dagokion ordezkoa ebaluatzen 21. Bosgarren argumentua 300 ez du dagokion ordezkapenik eta emaitza lehenetsia da. Funtzioak emaitza hori itzultzen du formulak ez baitu errorerik. 300
IfError( 1/0, Notify ( "Barne arazo bat egon da") Lehenengo argumentuak errore balioa itzultzen du (zero zatituta dagoelako). Funtzioak bigarren argumentua ebaluatzen du eta mezu bat bistaratzen dio erabiltzaileari. Itzulitako balioa IfErrorNotify-ren itzulitako balioa da, lehenengo argumentuaren IfError (zenbaki bat) mota berean behartuta. 1

Sinplea IsError

Formula Deskribapenak Emaitza
IsError( 1 ) Argumentua ez da errorea. faltsua
IsError( Hutsik () ) Argumentua hutsa da, baina ez da akatsa. faltsua
IsError( 1/0 ) Argumentua errorea da. egia
if ( IsError( 1 / 0 ), notify( "barne arazo bat egon da" ) ) Errore-balioa itzultzen du argumentuak IsError (zerorekin zatitzeagatik). Funtzio honek itzultzen du egia, horrek eragiten du Bada erabiltzaileari mezu bat bistaratzeko Notify funtzioarekin. Itzuleraren balioa If itzulera balioa da Jakinarazi, lehendabiziko argumentuari mota berdinera helarazi zitzaion If (boolearra). egia

Sinplea IsBlankOrError

Formula Deskribapenak Emaitza
IsBlankOrError( 1 ) Argumentua ez da errorea edo hutsa. faltsua
IsBlankOrError( Hutsik () ) Argumentua hutsa da. egia
IsBlankOrError( 1/0 ) Argumentua errorea da. egia

Sinplea Error

Adibide honetan, datak bata bestearen aldean baliozkotzen dira, arazoren bat izanez gero errore bat sortuz.

If( StartDate > EndDate,
    Error( { Kind: ErrorKind.Validation, Message: "Start Date must be before End Date" } ) )

Adibide honetan, errore batzuk pasatzen uzten dira eta beste batzuk kendu eta balio batekin ordezkatzen dira. Lehenengo kasuan, b akats-egoeran dago Balioa funtzioak argumentu baliogabea duelako. Formula idazleak hau ustekabekoa denez, erabiltzaileak ikus dezan pasatzen da. Bigarren kasuan, formula berarekin, b k 0 balioa du, eta ondorioz, zeroz zatitzea. Kasu honetan, formula-idazleak jakin dezake hori onargarria dela logika honetarako, errorea kendu (ez da pankartarik erakusten) eta -1 itzuli.

With( {a: 1, b: Value("a")},
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns an error with Kind = ErrorKind.InvalidArgument

With( {a: 1, b: 0} )
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns -1

AllErrors taula beste edozein taula bezala iragazi daiteke. Funtzioarekin Error erabiliz, espero ziren erroreak kendu eta gainerako erroreak mantendu eta jakinarazi daitezke. Esaterako, bagenekien zeroz zatitzea testuinguru jakin batean arazo bat izango ez zela, akats horiek iragazi litezke, gainerako akats guztiak bere horretan utziz formula honekin:

Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )

Urratsez urrats

  1. Gehitu Text input kontrola eta izendatu TextInput1 izen lehenespenez ez badu.

  2. Gehitu Label kontrola eta izendatu Label1 izen lehenespenez ez badu.

  3. Ezarri Label1 balioaren formularen Testua propietatea horrela:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. TextInput1 balioan, sartu 1234.

    Etiketak1 1234 balioa erakusten du Balio funtziorako baliozko sarrera bat baita.

  5. TextInput1 balioan, sartu ToInfinity.

    Etiketak1 -1 balioa erakusten du, hau ez baita Balio funtziorako baliozko sarrera bat. Balioa funtzioa IfErroritzulbiratu gabe, etiketak ez luke baliorik erakutsiko, errore-balioa hutsune gisa tratatzen baita.

Ikus baita ere

Formularen erreferentzia Power Apps