Partekatu honen bidez:


Error, IfError, IsError, IsBlankOrError funtzioak

Hauei aplikatzen zaie: Canvas aplikazioak Dataverse formula-zutabeak Mahaigaineko fluxuak Modeloetan oinarritutako aplikazioak Power Pages Power Platform CLI

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

Oharra

IfError

IfError funtzioak erroreak aurkitu arte probatzen ditu balioak. 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. IfError funtzioaren egiturak If funtzioaren antza badu: IfError erroreak probatzeko, berriz If probetarako egia.

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

IfError( 1/x, 0 )

Formula hau itzultzen da 0 balioa x zero baldin bada 1/x errore bat sortuko du. 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 Patch DS1 huts egin du. Errore baten irismena kateatzen den formula bakoitzera mugatzen da.

Erabili IfError ekintza bat egin eta ekintza arrakastatsua izapidetzen jarraitu besterik ez dago. Aplikatuz IfError adibide honetara:

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

Bada Patch DS1 arazo bat du, lehena Jakinarazi exekutatu da. Bigarrena ere ez da prozesatzen Patch DS2. 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, itzuleraren balioa IfError arazoak egon ote ziren egiaztatzeko aukera dago:

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

Moten bateragarritasuna

IfError bere argudioetako baten balioa itzuliko du. Itzul litezkeen balio guztien motak IfError bateragarria izan behar du.

Azken adibidean, Patch erabilitako balio boolearrekin bateragarria ez den erregistroa itzuliko du Ordezko formulak edo DefaultResult. Oso ondo dago, izan ere, ez dago egoera horien itzuleraren balioa Patch deiak itzuliko lirateke IfError.

Oharra

Aldaketaren prozesuan jokaera dagoen bitartean, argudio guztien motak ere erabil daitezke IfError bateragarria izan behar du.

Lehen deskribatutako adibide bakarrean:

IfError( 1/x, 0 )

Motak 1/x eta 0 bateragarriak ziren biak zenbakiak ziren bezala. Ez badira, bigarren argumentua lehen argumentu motarekin bat etorriko da.

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

Ikusi IfError honako balio hauekin ordez:

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

Goiko formulak ez du funtzionatzen. "#DIV/0!" testu-katea lehenengo argumentuaren tipologiarekin hertsatuko da IfError , zenbaki bat den. IfError funtzioaren emaitza beste errore bat izango da testu-katea ezin baita hertsitu. Konponbide gisa, bihurtu lehen argumentua testu-kate batera IfError beti testu-kate bat itzultzen da:

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

Goian ikusi den bezala, IfError errorea itzul dezake Ordezkoa edo DefaultResult errorea bada.

FirstError / AllErrors

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 balioak First( AllErrors ) balio bera itzuliko du beti.

Errore-erregistroen artean hauek daude:

Eremua Idatzi Deskribapenak
Mota ErrorKind zenbakitzea (zenbakia) Errorearen kategoria.
Mezua Testu-katea Erroreari buruzko mezua, azken erabiltzaileari bistaratzeko egokia.
Iturburua Testu-katea Akatsa sortu den kokapena, txostena egiteko erabiltzen dena. Esate baterako, kontrol-propietate bati loturiko formula baterako, ControlName.PropertyName forma izango da.
Behatuta Testu-katea Kokapena errorea erabiltzaileari azaleratzen zaionean, salatzeko erabiltzen da. Esate baterako, kontrol-propietate bati loturiko formula baterako, ControlName.PropertyName forma izango da.
Xehetasunak Grabatu Erroreari buruzko xehetasunak. Gaur egun, sareko akatsetarako soilik ematen dira xehetasunak. Erregistro honek HttpStatusCode HTTP egoera kodea duen 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 nahikoa funtziona 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

IsError funtzio-probak akats-balio bat lortzeko.

Itzuleraren balioa boolear bat da egia edo faltsua.

Erabiltzea IsError errorearen prozesamendu gehiago ekidingo du.

IsBlankOrError

IsBlankOrError funtzioaren probak balio hutsaren edo errore-balioaren eta honen baliokidea da: Or( IsBlank( X ), IsError( X ) ).

Lehendik dauden aplikazioen erroreen kudeaketa gaitzen duzunean, kontuan hartu ordeztea IsBlank IsBlankOrError elementuarekin dagoen aplikazioaren portaera gordetzeko. Akatsen tratamendua gehitu aurretik, hutsik balioa datu baseetako balio balioak eta errore balioak adierazteko erabili da. Akatsen tratamenduak bi interpretazio hauek bereizten ditu hutsik erabiltzen jarraitzen duten aplikazioen portaera alda dezake horrek IsBlank.

Itzuleraren balioa boolear bat da egia edo faltsua.

Erabiliz IsBlankOrError akatsa beste prozesatzea saihestuko du.

Erabili Errorea funtzioa errore pertsonalizatuak sortzeko eta txosten bat sortzeko. 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, osatu Mota eta Mezua, goian deskribatutako erregistro bera erabiliz IfError funtzioa.

IfError-ren testuinguruan, erabili Error funtzioa errore bat berriro botatzeko edo pasatzeko. Adibidez, IfError n duzun logikak erabaki dezake kasu batzuetan errore bat modu seguruan baztertu daitekeela, baina beste kasu batzuetan errorea bidaltzea garrantzitsua da. IfError edo App.OnError barruan, erabili Error( FirstError) errore bat pasatzeko.

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

hutsik erregistro edo taula huts bat Errorea era pasatzean ez da errorerik sortzen.

Sintaxia

Errorea( ErrorRecord )
Errorea( ErrorTable )

  • ErrorRecord – Beharrezkoa. Erroreen informazio erregistroa, Mota, Mezua eta beste eremu batzuk barne. Mota beharrezkoa da. FirstError zuzenean pasa daiteke.
  • ErrorTable – Beharrezkoa. Erroreen informazio-erregistroen taula. AllErrors zuzenean pasa daiteke.

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

  • 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

IfError sinplea

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, Jakinarazi( "Barneko arazo bat dago" ) ) Lehenengo argumentuak errore balioa itzultzen du (zero zatituta dagoelako). Funtzioak bigarren argumentua ebaluatzen du eta mezu bat bistaratzen dio erabiltzaileari. Itzuleraren balioa IfError itzulera balioa da Jakinarazi, lehendabiziko argumentuari mota berdinera helarazi zitzaion IfError (zenbaki bat). 1

IsError sinplea

Formula Deskribapenak Emaitza
IsError( 1 ) Argumentua ez da errorea. faltsua
IsError( Blank() ) Argumentua hutsa da, baina ez da akatsa. faltsua
IsError( 1/0 ) Argumentua errorea da. egiazkoa
If( IsError( 1/0 ), Jakinarazi( "Barneko arazo bat dago" ) ) Argumentuak IsError funtzioa errore balioa itzultzen du (zero zatituta dagoelako). 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). egiazkoa

Simple IsBlankOrError

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

Errore sinplea

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 egongo da Balioa funtzioak argumentu baliogabea duelako. Formula-idazleak hau ustekabekoa denez, pasatzen da erabiltzaileak ikus dezan. Bigarren kasuan, formula berarekin, b k 0 balioa izango du, zeroz zatitzea eraginez. 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. Errorea funtzioarekin erabilita, espero diren erroreak kendu eta gainerako akatsak gorde eta jakinarazi. Esaterako, bagenekien zeroz zatiketa ez zela arazo bat izango testuinguru jakin batean, 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.

    Label1 balioak erakutsiko du 1234 balio funtziorako sarrera baliozkoa baita.

  5. TextInput1 balioan, sartu ToInfinity.

    Label1 balioak erakutsiko du -1 balio funtziorako balio ez duen sarrera baita. Balio funtzioa IfError-ekin estali gabe, etiketak ez luke baliorik erakutsiko errore-balioa gisa tratatzen den bezala hutsik.

Ikus baita ere

Power Apps Formularen erreferentzia