Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
| Funtzioak | Honi dagokio |
|---|---|
| Error IfError IsError |
|
| IsBlankOrError |
|
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:
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
Gehitu Text input kontrola eta izendatu TextInput1 izen lehenespenez ez badu.
Gehitu Label kontrola eta izendatu Label1 izen lehenespenez ez badu.
Ezarri Label1 balioaren formularen Testua propietatea horrela:
IfError( Value( TextInput1.Text ), -1 )TextInput1 balioan, sartu 1234.
Etiketak1 1234 balioa erakusten du Balio funtziorako baliozko sarrera bat baita.
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.