Функция за грешки

Отнася се за: Приложения за платно Приложения , задвижвани от модели

Предоставя информация за грешка при предишни промени на източник на данни.

Преглед

Грешки могат да се случат, когато запис на източник на данни се променя. Възможни са много причини, включително прекъсвания на мрежата, неадекватни разрешения и конфликти за редактиране.

Функциите, които променят данните в източниците на данни, като например 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 връща, ще бъде empty и може да се тества с IsEmpty функция.

Синтаксис

Errors( DataSource [, Record ] )

  • DataSource – Задължително. Източникът на данни, за който искате да върнете грешки.
  • Record – Опционално. Специфичен запис, за който искате да върнете грешки. Ако не посочите този аргумент, функцията връща грешки за целия източник на данни.

Примери

Стъпка по стъпка

За този пример ще работим с Сладолед източник на данни:

Сладолед.

Чрез приложението потребителят зарежда записа на шоколад във форма за въвеждане на данни и след това променя стойността на количество на 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 ) )

която се връща невярно, защото Errors функцията върна следната таблица:

Запис Колона Съобщение Грешка
{ Flavor: "Chocolate", Quantity: 100 } blank „Друг потребител е променил записа, който се опитвате да промените. Моля, презаредете записа и опитайте отново.“ ErrorKind.Conflict

Можете да поставите етикет върху формата, за да покажете тази грешка на потребителя.

  • За да покажете грешката, задайте свойството Text на етикета на тази формула:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Можете също да добавите бутон Презареждане върху формуляра, така че потребителят да може ефективно да разреши конфликта.

  • За да се показва бутонът само когато е възникнал конфликт, задайте свойството на бутоните видимо на тази формула:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • За да върнете промяната, когато потребителят избере бутон, задайте свойството й OnSelect на тази формула:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )