Bendrinti naudojant


Errors funkcija

Taikoma: Drobės programėlės Modeliu pagrįstos programėlės

Pateikta ankstesnių duomenų šaltinio pakeitimų klaidų informaciją.

Apžvalga

Errors gali nutikti, kai pakeičiamas duomenų šaltinio įrašas . To priežasčių gali būti įvairių, įskaitant dingusį tinklo ryšį, netinkamas teises ir redagavimo konfliktus.

Funkcijos, kurios modifikuoja duomenis duomenų šaltiniuose, pvz., Patch, Collect, Remove, RemoveIf, Update, UpdateIf ir SubmitForm apie klaidas praneša dviem būdais:

  • Kiekviena iš šių funkcijų pateikia klaidos reikšmę kaip operacijos rezultatą. Errorsgalima aptikti naudojant "IsError" ir pakeisti arba nerodyti naudojant "IfError" ir "App.OnError". Daugiau informacijos žr. Klaidų apdorojimas.
  • Po operacijos Errors funkcija taip pat pateiks ankstesnių operacijų klaidas. Tai gali būti naudinga, kai klaidos pranešimas rodomas formos ekrane ir nereikia užfiksuoti klaidos būsenos kintamajame.

Kai kurių klaidų galite išvengti iš anksto, naudodami funkcijas Validate ir DataSourceInfo. Žr. straipsnį apie darbą su duomenų šaltiniais, kuriame pateikiama daugiau pasiūlymų, kaip dirbti su klaidomis ir jų išvengti.

Aprašas

Funkcija Errors pateikia klaidų lentelę , kurioje yra šie stulpeliai:

  • Įrašas. Duomenų šaltinio įrašas, dėl kurio įvyko klaida. Jei kuriant įrašą įvyko klaida, šis stulpelis yra tuščias.
  • Stulpelis. Stulpelis, dėl kurio įvyko klaida, jei klaidą galima priskirti vienam stulpeliui. Jei ne, jis tuščias.
  • Pranešimas. Klaidos aprašas. Šią klaidos eilutę galima rodyti galutiniam vartotojui. Šį pranešimą gali sugeneruoti duomenų šaltinis, jis gali būti ilgas ir jame gali būti neapdorotų stulpelių pavadinimų, kurie gali neturėti jokios reikšmės vartotojui.
  • Klaida. Klaidos kodas, kurį galima naudoti formulėse, kad būtų lengviau ištaisyti klaidą:
ErrorKind Aprašas
ErrorKind.Conflict Buvo atliktas kitas to paties įrašo pakeitimas, todėl atsirado keitimo konfliktas. Naudodami funkciją Refresh, iš naujo įkelkite įrašą ir bandykite keisti dar kartą.
ErrorKind.ConstraintViolation Pažeistas vienas arba daugiau apribojimų.
ErrorKind.CreatePermission Buvo bandyta sukurti įrašą, o dabartinis vartotojas neturi teisės kurti įrašų.
ErrorKind.DeletePermission Buvo bandyta panaikinti įrašą, o dabartinis vartotojas neturi teisės naikinti įrašų.
ErrorKind.EditPermission Buvo bandyta redaguoti įrašą, o dabartinis vartotojas neturi teisės redaguoti įrašų.
ErrorKind.GeneratedValue Buvo bandyta pakeisti stulpelį, kurį duomenų šaltinis generuoja automatiškai.
ErrorKind.MissingRequired Įraše trūksta būtino stulpelio reikšmės.
ErrorKind.None Klaidos nėra.
ErrorKind.NotFound Buvo bandyta redaguoti arba panaikinti įrašą, tačiau įrašo nepavyko rasti. Įrašą galėjo pakeisti kitas vartotojas.
ErrorKind.ReadOnlyValue Buvo bandyta pakeisti tik skaitomą stulpelį.
ErrorKind.Sync Duomenų šaltinis pranešė apie klaidą. Daugiau informacijos rasite stulpelyje Pranešimas.
ErrorKind.Unknown Įvyko klaida, tačiau nežinoma, kokia.
ErrorKind.Validation Aptikta bendra tikrinimo problema, kuri netelpa į vieną iš kitų tipų.

Errors galima grąžinti visam duomenų šaltiniui arba tik pasirinktai eilutei pateikiant funkcijai argumentą Įrašas .

Pataisa arba kita duomenų funkcija gali grąžinti tuščią reikšmę, jei, pavyzdžiui, nepavyko sukurti įrašo. Galite perduoti tuščią " Errors" ir tokiu atveju ji pateikia atitinkamą klaidos informaciją. Paskesnis duomenų funkcijų naudojimas tame pačiame duomenų šaltinyje išvalo šią klaidos informaciją.

Jei klaidų nėra, grąžinama lentelė Errors bus tuščia ir gali būti patikrinta naudojant funkciją IsEmpty .

Sintaksė

Errors( DataSource [, Record ] )

  • DataSource - būtina. Duomenų šaltinis, kurio klaidas norite pateikti.
  • Įrašas – neprivalomas. Konkretus įrašas, kurio klaidas norite pateikti. Jei šio argumento nenurodote, funkcija pateikia viso duomenų šaltinio klaidas.

Pavyzdžiai

Nuoseklūs veiksmai

Šiame pavyzdyje dirbsime su " IceCream " duomenų šaltiniu, duomenų šaltiniu, kurio "Power Apps" bandys aptikti konfliktus:

Ledai.

Pastaba.

"Power Apps" nebando aptikti "Dataverse" lentelių pakeitimų konfliktų.

Programoje vartotojas į duomenų įvedimo formą įrašo įrašą Šokoladiniai ir elemento Quantity reikšmę pakeičia į 90. Įrašas, su kuriuo bus dirbama, įdedamas į konteksto kintamąjįEditRecord:

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

Norint, kad šis pakeitimas būtų atliktas duomenų šaltinyje, naudojama funkcija Patch:

  • Patch( IceCream, EditRecord, Gallery.Updates )

Kai Gallery.Updates vertinama kaip { Kiekis: 90 }, nes buvo modifikuota tik ypatybė Kiekis .

Deja, tik prieš iškviečiant funkciją Patch, kažkas įrašo Šokoladiniai ypatybę Quantity modifikuoja į 80. Tai yra palaikomas duomenų šaltinis konfliktams aptikti, todėl "Power Apps" tai aptiks ir neleis kilti konfliktuojantiems keitiniams. Šią situaciją galite patikrinti naudodami formulę:

  • IsEmpty( Errors( IceCream, EditRecord ) )

Kuri pateikia klaidingąErrors reikšmę, nes funkcija pateikė šią lentelę:

Įrašas Stulpelinė Pranešimas Klaida
{ Flavor: "Šokoladiniai", Quantity: 100 } Tuščią „Įrašą, kurį bandote modifikuoti, modifikavo kitas vartotojas. Iš naujo įkelkite įrašą ir bandykite dar kartą." ErrorKind.Conflict

Žymą galite padėti formoje, kad ši klaida būtų rodoma vartotojui.

  • Norėdami rodyti klaidą, nustatykite žymos ypatybę Tekstas kaip šią formulę:
    Label.Text = First(Errors( IceCream, EditRecord )). Pranešimas

Taip pat formoje galite įtraukti mygtuką Įkelti iš naujo, kad vartotojas galėtų efektyviai išspręsti konfliktą.

  • Jei norite, kad mygtukas būtų rodomas tik kilus konfliktui, nustatykite mygtuko ypatybę Visible kaip šią formulę:
    ! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict )
  • Norėdami grąžinti keitimą, kurį vartotojas pasirenka mygtuką, nustatykite jo ypatybę OnSelect šiai formulei:
    ReloadButton.OnSelect = grąžinti( IceCream, EditRecord )