Қателер функциясы
Қолданылады: 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 | Түрлердің ешбіріне жатпайтын жалпы тексеру мәселесі анықталды. |
Функцияға Жазба аргументін қамтамасыз ету арқылы қателерді бүкіл деректер көзі үшін немесе тек таңдалған жол үшін қайтаруға болады.
Патч немесе басқа деректер функциясы a қайтаруы мүмкін бос мән, мысалы, жазба жасау мүмкін болмаса. Errors функциясына blank мәнін өткізсеңіз, ол осы жағдайларда қате туралы тиісті ақпаратты қайтарады. Бір деректер көзінде кейін деректер функцияларын пайдалану осы қате туралы ақпаратты тазалайды.
Қателер болмаса, Errors қайтаратын кесте бос болады және оны IsEmpty функциясы арқылы тексеруге болады.
Синтаксис
Қателер ( Деректер көзі [, Жазба ])
- Деректер көзі – Міндетті. Қателерді қайтару керек деректер көзі.
- Жазба – Қосымша. Қателерді қайтару керек нақты жазба. Бұл аргументті көрсетпесеңіз, бұл функция бүкіл деректер көзі үшін қателерді қайтарады.
Мысалдар
Қадам бойынша
Бұл мысал үшін біз IceCream деректер көзімен жұмыс істейміз:
Бағдарлама арқылы пайдалнаушы деректерді енгізу пішініне «Шоколад» жазбасын жүктейді, содан кейін Мөлшер мәнін 90 деп өзгертеді. Жұмыс істейтін жазба мәтін айнымалысындаEditRecord орналастырылады:
- Жаңарту мәтінмәні( { Жазбаны өңдеу: іздеу( балмұздақ, дәм = "шоколад" ) } )
Деректер көзінде осы өзгерісті енгізу үшін Patch функциясы пайдаланылады:
- Патч (IceCream, EditRecord, Gallery.Updates)
мұндағы Gallery.Updates функциясы { Quantity: 90 } деп есептеледі, өйткені тек Quantity сипаты өзгертілген.
Өкінішке орай, тура Patch функциясы шақырылмай тұрып, басқа біреу шоколадтың Мөлшер мәнін 80 деп өзгерткен. Power Apps мұны анықтап, қайшылықты өзгерістің орын алуына жол бермейді. Бұл жағдайды мына формула арқылы тексеруге болады:
- IsEmpty( Қателер( IceCream, EditRecord ) )
ол false мәнін қайтарады, өйткені Errors функциясы келесі кестені қайтарды:
Жазба | Баған | Хабарлама | Қате |
---|---|---|---|
{ Түрі: "Шоколад", Мөлшер: 100 } | бос | "Басқа пайдаланушы сіз өзгертуге әрекеттеніп жатқан жазбаны өзгертті. Жазбаны қайта жүктеп, әрекетті қайталаңыз." | ErrorKind.Conflict |
Бұл қатені пайдаланушыға көрсету үшін пішінге белгі қоюға болады.
- Қатені көрсету үшін белгінің Мәтін сипатын мына формулаға орнатыңыз:
Label.Text = Бірінші(Қателер( IceCream, EditRecord )).Хабар
Сондай-ақ пішінде Қайта жүктеу түймешігін қосуға болады, осылайша пайдаланушы қайшылықты тиімді шеше алады.
- Түймешікті қайшылық орын алғанда ғана көрсету үшін түймешіктің Көрінеді сипатын мына формулаға орнатыңыз:
!IsEmpty( Іздеу( Қателер( IceCream, EditRecord ), Қате = ErrorKind.Conflict ) ) - Пайдаланушы түймешікті таңдайтын өзгерісті қайтару үшін оның OnSelect сипатын мына формулаға орнатыңыз:
ReloadButton.OnSelect = Қайтару( IceCream, EditRecord )