Функция за грешки
Отнася се за: Приложения за платно Приложения, управлявани от модел
Предоставя информация за грешка при предишни промени на източник на данни.
Преглед
Грешки могат да се случат, когато запис на източник на данни се променя. Възможни са много причини, включително прекъсвания на мрежата, неадекватни разрешения и конфликти за редактиране.
Функциите, които променят данните в източниците на данни, като например 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 връща, ще бъде empty и може да се тества с IsEmpty функция.
Синтаксис
Грешки ( Източник на данни[, Запис ] )
- Източник на данни – Задължително. Източникът на данни, за който искате да върнете грешки.
- Запис – По избор. Специфичен запис, за който искате да върнете грешки. Ако не посочите този аргумент, функцията връща грешки за целия източник на данни.
Примери
Стъпка по стъпка
За този пример ще работим с Сладолед източник на данни:
Чрез приложението потребителят зарежда записа на шоколад във форма за въвеждане на данни и след това променя стойността на количество на 90. Записът, с който ще се работи, се поставя в контекстна променливаEditRecord:
- UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )
За да направите тази промяна в източник на данни, функцията Patch се използва:
- Patch( IceCream, EditRecord, Gallery.Updates )
където Gallery.Updates се оценява до { Quantity: 90 }, тъй като само Quantity свойството е променено.
За съжаление, точно преди функцията Patch да бъде извикана, някой друг модифицира количество за шоколад до 80. Power Apps ще открие това и няма да позволи противоречивата промяна да се случи. Можете да проверите за тази ситуация с формулата:
- IsEmpty( Грешки ( IceCream, EditRecord ) )
която се връща невярно, защото Errors функцията върна следната таблица:
Запис | Колона | Съобщение | Грешка |
---|---|---|---|
{ Flavor: "Chocolate", Quantity: 100 } | интервал | „Друг потребител е променил записа, който се опитвате да промените. Моля, презаредете записа и опитайте отново.“ | ErrorKind.Conflict |
Можете да поставите етикет върху формата, за да покажете тази грешка на потребителя.
- За да покажете грешката, задайте свойството Text на етикета на тази формула:
Label.Text = First(Errors( IceCream, EditRecord )). Съобщение
Можете също да добавите бутон Презареждане върху формуляра, така че потребителят да може ефективно да разреши конфликта.
- За да се показва бутонът само когато е възникнал конфликт, задайте свойството на бутоните видимо на тази формула:
! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Грешка = ErrorKind.Conflict ) ) - За да върнете промяната, когато потребителят избере бутон, задайте свойството й OnSelect на тази формула:
ReloadButton.OnSelect = Revert( IceCream, EditRecord )