Функција грешака
Односи се на: Цанвас апликације Апликације засноване на моделу
Пружа информације о грешци за претходне промене у извору података.
Преглед
Грешке се могу догодити када се промени запис извора података. Могући су многи узроци, укључујући прекид мреже, неадекватне дозволе и сукобе око уређивања.
Функције које мењају податке у изворима података, као што су 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 | Откривен је општи проблем валидације који није одговарао ниједној другој врсти. |
Грешке се могу вратити за читав извор података или само за одабрани ред пружањем аргумента функцији Запис.
Закрпа или нека друга функција података може да врати празну вредност ако, на пример, запис не може бити креиран. Можете да проследите празно у Errors, а она ће вратити одговарајуће информације о грешкама у тим случајевима. Наредна употреба функције података у истом извору података очистиће ове информације о грешци.
Ако нема грешака, табела коју враћа функција Errors биће празна и може се тестирати помоћу функције IsEmpty.
Синтакса
Грешке ( ДатаСоурце [, Рецорд ] )
- ДатаСоурце – Обавезно. Извор података за који желите да враћа грешке.
- Запис – Опционо. Одређени запис за који желите да враћа грешке. Ако не наведете овај аргумент, функција враћа грешке за цео извор података.
Примери
Корак по корак
За овај пример, радићемо са извором података IceCream:
Кроз апликацију корисник учитава запис Чоколада у обрасцу за унос података, а затим мења вредност Количина на 90. Запис са којим се ради смештен је у променљиву контекста EditRecord:
- UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Чоколада" ) } )
Да бисте извршили ову промену у извору података, функција Patch се користи:
- Патцх ( ИцеЦреам, ЕдитРецорд, Галлерy.Упдатес )
где Gallery.Updates процењује на { Количина: 90 }, пошто је само својство Количина модификовано.
На жалост, мало пре него што је функција Patch позвана, неко други модификује Количину за чоколаду на 80. Power Apps ће открити то и неће дозволити да се догоди конфликтна промена. Можете проверити ову ситуацију помоћу формуле:
- ИсЕмптy ( Грешке( ИцеЦреам, ЕдитРецорд ) )
која враћа нетачно, зато што је функција Errors вратила следећу табелу:
Запис | Колона | Порука | Грешка |
---|---|---|---|
{ Flavor: "Chocolate", Quantity: 100 } | Празно | „Други корисник је изменио запис који покушавате да измените. Поново учитајте запис, а затим покушајте поново.“ | ErrorKind.Conflict |
На образац можете ставити ознаку која ће кориснику показати ову грешку.
- Да бисте приказали грешку, подесите својство Текст ознаке на ову формулу:
Лабел .Тект = Фирст(Еррорс( ИцеЦреам, ЕдитРецорд )). Поруку
Такође можете да додате дугме Учитај поново на образац, тако да корисник може ефикасно решити сукоб.
- Да бисте дугме приказали само када се догодио сукоб, подесите својство Видљиво дугмета према овој формули:
! ИсЕмптy ( Лоокуп( Еррорс( ИцеЦреам, ЕдитРецорд), Еррор = ЕррорКинд.Цонфлицт) ) - Да бисте вратили промену коју корисник изабере када притисне дугме, подесите његово својство OnSelect према овој формули:
РелоадБуттон .ОнСелецт = Реверт( ИцеЦреам, ЕдитРецорд )