Error, IfError, IsError, функциялары IsBlankOrError

Функциялар Мынаған қолданылады
Error
IfError
IsError
Кенеп бағдарламалары Copilot Studio Жұмыс үстелі ағындары Dataverse формула бағандары Үлгіге негізделген бағдарламалар Power Platform CLI Dataverse функциялары Power Pages
IsBlankOrError Кенеп бағдарламалары Copilot Studio Жұмыс үстелі ағындары Модельге негізделген бағдарламалар Power Platform CLI Dataverse функциялары Power Pages

Қателерді анықтайды және балама мәнді береді немесе әрекет жасайды. Реттелетін қатені жасаңыз немесе қатені жіберіңіз.

Ескертпе

Қолданба Формула деңгейіндегі қателерді басқару мүмкіндікін Параметрлер>Жаңартулар> астындағы ажыратса Жұмыстан шыққан, бұл функциялар дұрыс жұмыс істемейді.

IfError

Функция IfError қате тапқанға дейін мәндерді тексереді. Функция қатені тапса, функция есептеледі және сәйкес ауыстыру мәнін қайтарады және одан әрі есептеуді тоқтатады. Сондай-ақ қателер табылмаған жағдайға әдепкі мәнді беруге болады. Құрылымы If функциясына ұқсас: IfError қателерді тексереді, ал If шындыққа IfError тексеріледі.

Төмендегі есептеулерді жалғастыру үшін қатені жарамды мәнмен ауыстыру үшін пайдаланыңыз IfError . Мысалы, бұл функцияны пайдаланушының енгізуі нөлге бөлуге әкелуі мүмкін болса пайдаланыңыз:

IfError( 1/x, 0 )

Бұл формула 0 қайтарады x мәні нөлге тең болса, 1/x қате шығарады. x нөл болмаса, 1/x қайтарылады.

Одан әрі өңдеуді тоқтату

Мінез-құлық формулаларында формулаларды тізбектегенде, мысалы:

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

екінші функциясын орындауға тіпті DS2 функциясы сәтсіз болса да орындалады. Қатенің аумағы тізбектелетін әрбір формуламен шектеледі.

Әрекетті орындау үшін пайдаланыңыз IfError және әрекет сәтті болған жағдайда ғана өңдеуді жалғастырыңыз. Осы мысалды қолдану IfError :

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

DS1 мәселесі болса, алдымен Notify орындалады. Одан әрі өңдеу, соның ішінде екінші DS2 орын алмайды. Бірінші Patch сәтті болса, екінші Patch орындалады.

Берілген болса, қателер табылмаса, DefaultResult деген міндетті емес аргумент қайтарылады. Бұл аргументсіз, соңғы Value аргументі қайтарылады.

Соңғы мысалда келтіре отырып, қайтару мәнін IfError тексеруге болады, бұл қандай да бір проблемалар бар-жоғын анықтауға болады:

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

Түр үйлесімділігі

IfError Аргументтердің біреуінің мәнін қайтарады. Қайтарылуы IfError мүмкін барлық құндылықтардың түрлері үйлесімді болуы керек.

Соңғы мысалда Patch ауыстыру Ауыстыру формулалары үшін пайдаланылатын логикалық мәндермен үйлесімді емес жазбаны қайтарады немесе Әдепкі нәтиже. Бұл жақсы, өйткені бұл патч қоңырауларының IfErrorқайтарылатын мәнін қайтаратын жағдай жоқ.

Ескертпе

IfError Қазіргі уақытта барлық құжаттардың көшірмесі бір-бірімен үйлесімді болуы тиіс.

Бұрын сипатталған қарапайым мысалда:

IfError( 1/x, 0 )

Екеуі де сан болғандықтан 1/x және 0 түрлері үйлесімді болды. Егер олар болмаса, екінші аргумент бірінші аргумент түріне сәйкес келу үшін мәжбүрленеді.

Нөлге бөлу орын алған кезде Excel бағдарламасы #DIV/0! көрсетеді.

Оның орнына келесілерді қарастырыңыз IfError :

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

Жоғарыдағы формула жұмыс істемейді. Мәтін жолы "#DIV/0!" бірінші аргументтің IfErrorтүріне мәжбүр болады, ол сан болып табылады. IfError Тағы бір қате бар, себебі мәтін мазмұнын өзгерту мүмкін емес. Түзету ретінде, бірінші аргументті мәтін жолына түрлендіріңіз, осылайша IfError әрқашан мәтін жолын қайтарады:

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

Жоғарыда көрсетілгендей, IfErrorегер Ауыстыру немесе Әдепкі нәтиже қате болса, қатені қайтаруға болады.

БіріншіҚате / БарлығыҚателер

Ауыстыру формулаларында табылған қателер туралы ақпарат FirstError жазбасы және AllErrors кестесі арқылы қолжетімді. AllErrors бұл БіріншіҚате осы кестенің бірінші жазбасының таңбашасы болып табылатын қате туралы ақпарат жазбаларының кестесі. FirstError әрдайым бірдей мәнді қайтарады Бірінші( AllErrors ).

Error Жазбаларға мыналар кіреді:

Өріс Түр Сипаттама
Мейірімді ErrorKind санамалауы (сан) Қате санаты.
Хабарлама Мәтін жолы Соңғы пайдаланушыға көрсетуге жарайтын қате туралы хабар.
Дереккөз Мәтін жолы Қате пайда болған орын есеп беру үшін пайдаланылады. Мысалы, басқару сипатына байланыстырылған формула үшін бұл мән ControlName.PropertyName пішінінде болады.
Бақыланды Мәтін жолы Қате пайдаланушыға көрсетілетін орын есеп беру үшін пайдаланылады. Мысалы, басқару сипатына байланыстырылған формула үшін бұл мән ControlName.PropertyName пішінінде болады.
Мәліметтер Жазба Қате туралы мәліметтер. Қазіргі уақытта мәліметтер тек желі қателері үшін берілген. Бұл жазба құрамында HTTP күй коды бар HttpStatusCode және HttpResponse оның құрамында мына жерден жауап мәтіні бар. қосқыш немесе қызмет.

Мысалы, келесі формуланы Түйме басқару элементінің OnSelect сипаты ретінде қарастырыңыз:

Set( a, 1/0 )

Бұл формуланы екінші Түймешік басқару элементінің OnSelect сипатына қосыңыз:

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

Жоғарыдағы мысал формуласы екі түймешікті ретімен іске қосқанда келесі баннерді көрсетеді:

Басқару түймешігі іске қосылып, хабарландыру функциясының хабарламасы көрсетіледі.

Әдетте, БіріншіҚате жеткілікті түрде жұмыс істей алатын бір ғана қате болады. Дегенмен, бірнеше қате қайтарылуы мүмкін сценарийлер бар. Мысалы, формула тізбек оператын немесе параллель функциясы пайдаланған кезде. Тіпті мұндай жағдайларда FirstError кестесі пайдаланушыны бірнеше қатемен шамадан тыс жүктеудің орнына мәселені анықтау үшін жеткілікті болуы мүмкін. Егер сізде әлі де әрбір қатемен жеке жұмыс істеу талабы болса, AllErrors кестесін пайдалануға болады.

IsError

Функция IsError қате мәнін тексереді.

Қайтарылатын мән — логикалық true немесе false.

Пайдалану IsError қатені одан әрі өңдеуге жол бермейді.

IsBlankOrError

Функция бос мәнді немесе қате мәнін тексереді және Or( IsBlank( X ), IsError( X ) )баламасы болып табылады.IsBlankOrError

Бұрыннан бар бағдарламалар үшін қателерді өңдеуді қосқанда, қолданбаның мінез-құлқын сақтау үшін IsBlank-тіIsBlankOrError ауыстыруды қарастырыңыз. Қатені өңдеуді қоспас бұрын a бос мәні дерекқорлардағы бос мәндерді де, қате мәндерін де көрсету үшін пайдаланылды. ErrorӨңдеу IsBlank-ті пайдалануды жалғастыратын қолданбалардың мінез-құлқын өзгерте алатын осы екі түсіндірмені бөледі.

Қайтарылатын мән — логикалық шын немесе жалған.

Пайдалану IsBlankOrError қатені одан әрі өңдеуге жол бермейді.

Реттелетін қатені жасау және хабарлау үшін функцияны пайдаланыңыз Error . Мысалы, сізде кез келген берілген мән мәнмәтін үшін жарамды немесе жарамсыз екенін анықтау логикасы болуы мүмкін, яғни мәселе автоматты түрде тексерілмеген кезде. Функция үшін IfError жоғарыда сипатталған жазбаны пайдаланып, Түр және Хабар параметрлерімен толтырылған жеке қатені жасап, қайтаруға болады.

IfErrorҚатені қалпына келтіру немесе өту үшін функцияны пайдаланыңызError. Мысалы, сіздің логикаңыз IfError кейбір жағдайларда қатені қауіпсіз түрде елемеуге болады деп шешуі мүмкін, бірақ басқа жағдайларда қатені жіберу маңызды. Ішінде IfError немесе App.OnError, қатені жіберу үшін ( FirstError ) пернесін пайдаланыңызError.

Error Функция сондай-ақ AllErrors кестесінде көрсетілгендей қателер кестесін жіберуге болады. Бірінші ғана емес, барлық қателерді қайта тастау үшін ( AllErrors ) пайдаланыңызError.

Жіберілген Errorбос жазба немесе бос кесте қате жібермейді.

Синтаксис

Error( Қате жазбасы )
Error( Қате кестесі )

  • ErrorRecord – Міндетті. Error Түрі ,Хабар және басқа өрістерді қоса алғанда, ақпарат жазбасы. Түр міндетті. FirstError тікелей жіберуге болады.
  • Қателер кестесі – Міндетті. Қате туралы ақпарат жазбаларының кестесі. AllErrors тікелей жіберуге болады.

IfError( Мән1, Ауыстыру1 [, Мән2, Ауыстыру2, ... [, ӘдепкіНәтиже ] ] )

  • Мәндер – Міндетті. Қате мән бар-жоғы тексерілетін формула(лар).
  • Ауыстырулар – Міндетті. Сәйкес Value аргументтері қатені қайтарса, есептейтін формулалар және қайтаратын мәндер.
  • DefaultResult – Қосымша. Формула ешбір қателерді таппаса есептейтін формулалар.

IsError( Мәні )
IsBlankOrError( Мәні )

  • Мән – Міндетті. Тексерілетін формула,

Мысалдар

Қарапайым IfError

Формула Сипаттама Нәтиже
IfError( 1, 2 ) Бірінші аргумент қате емес. Функцияның тексеретін басқа қателері жоқ және әдепкі қайтаратын мәні жоқ. Бұл функция есептелген соңғы value аргументін қайтарады. 1
IfError( 1/0, 2 ) Бірінші аргумент қате мәнді қайтарады (нөлге бөлуге байланысты). Бұл функция екінші аргументті есептейді және оны нәтиже ретінде қайтарады. 2
IfError( 10, 20, 30 ) Бірінші аргумент қате емес. Функцияның тексеретін басқа қателері жоқ, бірақ әдепкі қайтаратын мәні бар. Бұл функция DefaultResult аргументін қайтарады. 30
IfError( 10, 11, 20, 21, 300 ) 10 деген бірінші аргумент қате емес, сондықтан бұл функция сол аргументтің 11 деген сәйкес ауыстыру мәнін есептемейді. 20 деген үшінші аргумент те қате емес, сондықтан бұл функция сол аргументтің 21 деген сәйкес ауыстыру мәнін есептемейді. 300 деген бесінші аргументте сәйкес ауыстыру мәні жоқ және әдепкі нәтиже болып табылады. Бұл функция формулада қателер болмағандықтан сол нәтижені қайтарады. 300
IfError( 1/0, Хабарландыру ( «Ішкі мәселе болды») ) Бірінші аргумент қате мәнді қайтарады (нөлге бөлуге байланысты). Бұл функция екінші аргументті есептейді және пайдаланушыға хабарды көрсетеді. Қайтаратын мән IfError - бұл (сан) үшін бірінші аргументпен IfError бірдей түрге мәжбүрленген Хабарландырудың қайтаратын мәні. 1

Қарапайым IsError

Формула Сипаттама Нәтиже
IsError( 1 ) Бұл аргумент қате емес. жалған
IsError( Бос () ) Аргумент бос, бірақ қате емес. жалған
IsError( 1/0 ) Бұл аргумент қате. рас
Егер( IsError( 1/0 ), Хабарландыру ( «Ішкі мәселе болды») ) Қате мәнін қайтаратын IsError аргумент (нөлге бөлгендіктен). Бұл функция шын мәнін қайтарады, бұл If операторының пайдаланушыға Notify функциясымен хабар көрсетуіне себеп болады. If функциясының қайтарылатын мәні — Notify функциясының If функциясының бірінші аргументімен бірдей түрге (логикалық мән) мәжбүрлеп орнатылған қайтарылатын мәні. рас

Қарапайым IsBlankOrError

Формула Сипаттама Нәтиже
IsBlankOrError( 1 ) Аргумент қате емес немесе бос. жалған
IsBlankOrError( Бос () ) Аргумент бос. рас
IsBlankOrError( 1/0 ) Бұл аргумент қате. рас

Қарапайым Error

Бұл мысалда күндер бір-біріне қатысты тексеріледі, нәтижесінде ақаулық туындаса, қате пайда болады.

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

Бұл мысалда кейбір қателер өтуге рұқсат етілген, ал басқалары басылған және мәнмен ауыстырылған. Бірінші жағдайда, б қате күйінде, себебі Мән функцияда жарамсыз аргумент бар. Бұл формула авторы күтпегендіктен, ол арқылы пайдаланушы оны көреді. Екінші жағдайда, сол формуламен, б 0 мәні бар, нәтижесінде нөлге бөлінеді. Бұл жағдайда формула авторы мұның осы логика үшін қолайлы екенін біліп, қатені басып (баннер көрсетілмейді) және орнына -1 қайтаруы мүмкін.

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 кестесін кез келген басқа кесте сияқты сүзгілеуге болады. Функциямен Error бірге пайдаланылған кезде күтілетін қателерді жоюға және қалған қателерді сақтауға және хабарлауға болады. Мысалы, егер нөлге бөлу белгілі бір контексте қиындық тудырмайтынын білсек, бұл қателерді келесі формуламен барлық басқа қателерді қалдырып, сүзуге болады:

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

Қадамдық

  1. Text input басқару элементін қосыңыз және әдепкі бойынша мұндай аты болмаса, оған TextInput1 атауын беріңіз.

  2. Белгі басқару элементін қосыңыз және әдепкі бойынша мұндай аты болмаса, оған Label1 атауын беріңіз.

  3. Label1 басқару элементінің Мәтін сипатының формуласын мынаған орнатыңыз:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. TextInput1 ішінде 1234 санын енгізіңіз.

    Label1 мәнді көрсетеді 1234 өйткені бұл Мән функциясына жарамды кіріс.

  5. TextInput1 ішінде ToInfinity деп енгізіңіз.

    Label1 мәнді көрсетеді -1 себебі бұл Value функциясына жарамды кіріс емес. Мән функциясын IfErrorораусыз , жапсырма мәнді көрсетпейді, өйткені қате мәні бос болып саналады.

Сондай-ақ келесіні қараңыз

Формула сілтемесі Power Apps