Share via


Қателер функциясы

Қолданылады: Canvas қолданбалары Үлгіге негізделген қолданбалар

Деректер көзіне енгізілген алдыңғы өзгертулер үшін қате туралы ақпаратты қамтамасыз етеді.

Шолу

Деректер көзінің жазбасы өзгергенде қателер орын алуы мүмкін. Көп себептер мүмкін, соның ішіне желі үзілістері, тиісті емес рұқсаттар және өңдеу қайшылықтары.

Patch, Collect, Remove, RemoveIf, Update, UpdateIf және SubmitForm сияқты деректер көздеріндегі деректерді өзгертетін функциялар қателер туралы екі жолмен хабарлайды:

  • Осы функциялардың әрқайсысы операцияның нәтижесі ретінде қате мәнін қайтарады. Қателерді IsError функциясымен анықтауға немесе әдеттегідей IfError және App.OnError функцияларымен басуға болады. Қосымша ақпарат алу үшін Қатені өңдеу бөлімін қараңыз.
  • Операциядан кейін Errors функциясы алдыңғы әрекеттердің қателерін де қайтарады. Ол күй айнымалысында қатені жазудың қажеті жоқ пішін экранында қате туралы хабарды көрсету үшін пайдалы болуы мүмкін.

Validate және DataSourceInfo функцияларын пайдалана отырып кейбір қателерді орын алмай тұрып болдырмауға болады. Қателермен жұмыс істеу және болдырмау жолы туралы көбірек ұсыныстарды деректер көздерімен жұмыс істеу бөлімінен қараңыз.

Сипаттама

Errors функциясы келесі бағандарды қамтитын қателер кестесін қайтарады:

  • Жазба. Деректер көзіндегі қатесі болған жазба. Жазбаны жасау кезінде қате орын алса, бұл баған бос болады.
  • Баған. Қате тудырған баған, қатені бір бағанға жатқызуға болса. Олай болмаса, ол бос болады.
  • Хабар. Қатенің сипаттамасы. Бұл қате жолын соңғы пайдаланушыға көрсетуге болады. Бұл хабарды деректер көзі жасауы мүмкін екенін әрі ұзын болуы және пайдаланушы үшін ешбір мағынасы жоқ өңделмеген баған атауларын қамтуы мүмкін екенін ескеріңіз.
  • Қате. Формулаларда қатені шешу үшін пайдалануға болатын қате коды:
ErrorKind Сипаттама
ErrorKind.Conflict Бір жазбаға тағы бір өзгеріс енгізіліп, өзгеріс қайшылығына әкелді. Жазбаны қайта жүктеу үшін Refresh функциясын пайдаланыңыз және қайтадан өзгертіп көріңіз.
ErrorKind.ConstraintViolation Бір немесе бірнеше шектеу бұзылды.
ErrorKind.CreatePermission Жазба жасауға әрекет жасалды, ал ағымдағы пайдаланушыда жазбалар жасауға рұқсаты жоқ.
ErrorKind.DeletePermission Жазбаны жоюға әрекет жасалды, ал ағымдағы пайдаланушыда жазбалар жоюға рұқсаты жоқ.
ErrorKind.EditPermission Жазбаны өңдеуге әрекет жасалды, ал ағымдағы пайдаланушыда жазбалар өңдеуге рұқсаты жоқ.
ErrorKind.GeneratedValue Деректер көзі автоматты түрде жасайтын бағанға өзгеріс енгізуге әрекет жасалды.
ErrorKind.MissingRequired Жазбада міндетті бағанның мәні жоқ.
ErrorKind.None Қате бар.
ErrorKind.NotFound Жазбаны өңдеуге немесе жоюға әрекет жасалды, бірақ жазбаны табу мүмкін болмады. Басқа пайдаланушы жазбаны өзгерткен болуы мүмкін.
ErrorKind.ReadOnlyValue Тек оқылатын бағанды өзгертуге әрекет жасалды.
ErrorKind.Sync Деректер көзі қате туралы хабарлады. Қосымша ақпарат алу үшін «Хабар» бағанын қараңыз.
ErrorKind.Unknown Қате болды, бірақ түрі белгісіз.
ErrorKind.Validation Түрлердің ешбіріне жатпайтын жалпы тексеру мәселесі анықталды.

Функцияға Жазба аргументін қамтамасыз ету арқылы қателерді бүкіл деректер көзі үшін немесе тек таңдалған жол үшін қайтаруға болады.

Мысалы, жазбаны жасау мүмкін болмаса, Patch немесе басқа деректер функциясы бос мәнді қайтаруы мүмкін. Errors функциясына blank мәнін өткізсеңіз, ол осы жағдайларда қате туралы тиісті ақпаратты қайтарады. Бір деректер көзінде кейін деректер функцияларын пайдалану осы қате туралы ақпаратты тазалайды.

Қателер болмаса, Errors қайтаратын кесте бос болады және оны IsEmpty функциясы арқылы тексеруге болады.

Синтаксис

Errors( DataSource [, Record ] )

  • DataSource – Міндетті. Қателерді қайтару керек деректер көзі.
  • Record – Міндетті емес. Қателерді қайтару керек нақты жазба. Бұл аргументті көрсетпесеңіз, бұл функция бүкіл деректер көзі үшін қателерді қайтарады.

Мысалдар

Қадам бойынша

Бұл мысал үшін біз IceCream деректер көзімен жұмыс істейміз:

Балмұздақ.

Бағдарлама арқылы пайдалнаушы деректерді енгізу пішініне «Шоколад» жазбасын жүктейді, содан кейін Мөлшер мәнін 90 деп өзгертеді. Жұмыс істейтін жазба мәтін айнымалысындаEditRecord орналастырылады:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )

Деректер көзінде осы өзгерісті енгізу үшін Patch функциясы пайдаланылады:

  • Patch( IceCream, EditRecord, Gallery.Updates )

мұндағы Gallery.Updates функциясы { Quantity: 90 } деп есептеледі, өйткені тек Quantity сипаты өзгертілген.

Өкінішке орай, тура Patch функциясы шақырылмай тұрып, басқа біреу шоколадтың Мөлшер мәнін 80 деп өзгерткен. Power Apps мұны анықтап, қайшылықты өзгерістің орын алуына жол бермейді. Бұл жағдайды мына формула арқылы тексеруге болады:

  • IsEmpty( Errors( IceCream, EditRecord ) )

ол false мәнін қайтарады, өйткені Errors функциясы келесі кестені қайтарды:

Жазба Баған Хабарлама Қате
{ Түрі: "Шоколад", Мөлшер: 100 } бос "Басқа пайдаланушы сіз өзгертуге әрекеттеніп жатқан жазбаны өзгертті. Жазбаны қайта жүктеп, әрекетті қайталаңыз." ErrorKind.Conflict

Бұл қатені пайдаланушыға көрсету үшін пішінге белгі қоюға болады.

  • Қатені көрсету үшін белгінің Мәтін сипатын мына формулаға орнатыңыз:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Сондай-ақ пішінде Қайта жүктеу түймешігін қосуға болады, осылайша пайдаланушы қайшылықты тиімді шеше алады.

  • Түймешікті қайшылық орын алғанда ғана көрсету үшін түймешіктің Көрінеді сипатын мына формулаға орнатыңыз:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Пайдаланушы түймешікті таңдайтын өзгерісті қайтару үшін оның OnSelect сипатын мына формулаға орнатыңыз:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )