Kļūdu funkcija

Attiecas uz: Pamatnes programmām Modeļa vadītas programmas

Kļūdas – datu avotam sniedz informāciju par kļūdu saistībā ar iepriekšējām izmaiņām datu avotā.

Pārskats

Kļūdas var rasties, ja datu avota ieraksts tiek mainīts. Ir iespējami daudzi iemesli, tostarp tīkla pārrāvumi, nepietiekamas atļaujas un rediģēšanas konflikti.

Funkcijas, kas pārveido datus datu avotos, piemēram, Patch, Collect, Remove, RemoveIf, Update, UpdateIf un SubmitForm ziņo par kļūdām divos veidos:

  • Katra no šīm funkcijām operācijas rezultātā atgriezīs kļūdas vērtību. Kļūdas vasr noteikt ar IsError un aizstāt vai apspiest ar IfError and App.OnError, kā pierasts. Skat. Kļūdu apstrāde, lai iegūtu papildinformāciju.
  • Pēc operācijas funkcija Kļūdas atgriezīs arī iepriekšējo operāciju kļūdas. Tas var būt noderīgi kļūdas ziņojuma parādīšanai veidlapas ekrānā, bez nepieciešamības tvert kļūdu stāvokļa mainīgajā.

Varat izvairīties no dažām kļūdām, pirms tās notiek, izmantojot funkcijas Validate un DataSourceInfo. Skatiet sadaļu darbs ar datu avotiem, lai iegūtu vairāk ierosinājumu par to, kā strādāt ar kļūdām un no tām izvairīties.

Apraksts

Funkcija Errors atgriež tabulu ar kļūdām, kas satur šādas kolonnas:

  • Ieraksts. Ieraksts datu avotā, kurā bija kļūda. Ja kļūda radās ieraksta izveides laikā, šī kolonna būs tukša.
  • Kolonna. Kolonna, kas izraisīja kļūdu, ja šo kļūdu var saistīt ar vienu kolonnu. Ja nevar, tā būs tukša.
  • Ziņojums. Kļūdas apraksts. Šo kļūdas virkni var rādīt gala lietotājam. Ņemiet vērā, ka šo ziņojumu var ģenerēt datu avots un tas var būt garš, kā arī saturēt neapstrādātus kolonnu nosaukumus, kuri lietotājam varētu neko nenozīmēt.
  • Kļūda. Kļūdas kods, kuru var izmantot formulās, lai atrisinātu kļūdu:
ErrorKind Apraksts
ErrorKind.Conflict Tam pašam ierakstam bija veiktas citas izmaiņas, radot izmaiņu konfliktu. Izmantojiet funkciju Refresh, lai atkārtoti ielādētu ierakstu, un vēlreiz mēģiniet veikt izmaiņas.
ErrorKind.ConstraintViolation Ir pārkāpts viens vai vairāki ierobežojumi.
ErrorKind.CreatePermission Tika veikts mēģinājums izveidot ierakstu, un pašreizējam lietotājam nav atļaujas veidot ierakstus.
ErrorKind.DeletePermission Tika veikts mēģinājums dzēst ierakstu, un pašreizējam lietotājam nav atļaujas dzēst ierakstus.
ErrorKind.EditPermission Tika veikts mēģinājums rediģēt ierakstu, un pašreizējam lietotājam nav atļaujas rediģēt ierakstus.
ErrorKind.GeneratedValue Tika veikts mēģinājums mainīt kolonnu, kuru datu avots ģenerē automātiski.
ErrorKind.MissingRequired Ierakstā nav obligātas kolonnas vērtības.
ErrorKind.None Nav kļūdu.
ErrorKind.NotFound Tika veikts mēģinājums rediģēt vai dzēst ierakstu, taču ieraksts netika atrasts. Iespējams, šo ierakstu ir mainījis cits lietotājs.
ErrorKind.ReadOnlyValue Tika veikts mēģinājums mainīt kolonnu, kas ir tikai lasāma.
ErrorKind.Sync Datu avots ziņoja par kļūdu. Papildinformāciju skatiet ziņojuma kolonnā.
ErrorKind.Unknown Radās kļūda, bet nezināma tipa.
ErrorKind.Validation Tika atklāta vispārēja validācijas problēma, kas neietilpst nevienā no citiem veidiem.

Kļūdas var atgriezt visam datu avotam vai arī vienīgi atlasītai rindai, funkcijai nodrošinot argumentu Ieraksts.

Patch vai cita datu funkcija var atgriezt vērtību blank, ja, piemēram, ierakstu nevar izveidot. Varat funkcijai Errors padot vērtību tukšs, un tā šajos gadījumos atgriezīs atbilstošo kļūdas informāciju. Secīga datu funkciju lietošanā vienā un tajā pašā datu avotā notīrīs šo kļūdas informāciju.

Ja kļūdu nav, funkcijas Errors atgrieztā tabula būs tukša, un to var testēt ar funkciju IsEmpty.

Sintakse

Errors( DataSource [, Ieraksts ] )

  • DataSource – Obligāti. Datu avots, kuram vēlaties atgriezt kļūdas.
  • Ieraksts — Neobligāti. Konkrēts ieraksts, kuram vēlaties atgriezt kļūdas. Ja šo argumentu nenorādāt, funkcija atgriež kļūdas visam datu avotam.

Piemēri

Pakāpeniskas darbības

Šajā piemērā mēs strādāsim ar datu avotu IceCream:

Saldējums.

Izmantojot programmu, lietotājs datu ievades veidlapā ielādē ierakstu Šokolāde un pēc tam nomaina Daudzuma vērtību uz 90. Ieraksts, ar ko strādāt tiek ievietots konteksta mainīgajāEditRecord:

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

Lai veiktu šīs izmaiņas datu avotā, tiek izmantota funkcija Patch:

  • Patch( IceCream, EditRecord, Gallery.Updates )

, kur Gallery.Updates tiek novērtēta ar { Daudzums: 90 }, jo ir modificēts vienīgi rekvizīts Daudzums.

Diemžēl tieši pirms Patch funkcijas izsaukšanas kāds cits modificē Daudzuma vērtību Šokolādei uz 80. Power Apps to atpazīs un neļaus rasties konfliktējošām izmaiņām. Varat šo situāciju pārbaudīt, izmantojot formulu:

  • IsEmpty( Errors( IceCream, EditRecord ) )

, kas atgriež vērtību false, jo funkcija Errors atgrieza šādu tabulu:

Ieraksts Stabiņš Ziņojums Kļūda
{ Garša "Šokolādes", Daudzums: 100 } tukšs "Cits lietotājs ir modificējis to ieraksta vērtību, kuru mēģināt modificēt. Lūdzu, pārlādējiet ierakstu un mēģiniet vēlreiz." ErrorKind.Conflict

Varat novietot etiķeti veidlapā, lai šo kļūdu rādītu lietotājam.

  • Lai rādītu kļūdu, iestatiet etiķetes rekvizītu Teksts uz šo formulu:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

Veidlapā varat arī pievienot Pārlādēšanas pogu, lai lietotājs varētu efektīvi atrisināt konfliktu.

  • Lai rādītu pogu vienīgi tad, kad ir radies konflikts, iestatiet pogas rekvizītu Redzams uz šo formulu:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Lai atgrieztu izmaiņas, kurās lietotājs atlasa pogu, iestatiet tās rekvizītu OnSelect uz šo formulu:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )