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:
- Rekords. 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ņa. 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.
Ielāps vai cita datu funkcija var atgriezt tukšu vērtību, ja, piemēram, ierakstu nevarēja 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
Kļūdas( DataSource [, Record ] )
- DataSource - Obligāts. Datu avots, kuram vēlaties atgriezt kļūdas.
- Ieraksts : pēc izvēles. 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:
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 = "Šokolāde" ) } )
Lai veiktu šīs izmaiņas datu avotā, tiek izmantota funkcija Patch:
- Plāksteris( 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( Kļūdas( 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ša | "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(Kļūdas( IceCream, EditRecord )). Ziņa
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 = atjaunot iepriekšējo versiju( IceCream, EditRecord )