Megosztás:


Errors függvény

A következőkre vonatkozik: Vászonalapú alkalmazások Modellalapú alkalmazások

Tájékoztatást nyújt az adatforrások korábban végrehajtott módosításaival kapcsolatos hibákról.

Áttekintés

Errors az adatforrás rekordjának módosításakor fordulhat elő. Számos okuk lehet, többek között hálózati kimaradás, a megfelelő jogosultságok hiánya vagy szerkesztési ütközések.

Az adatforrásokban található adatokat módosító függvények (például Patch, Collect, Remove, Removelf, Update, Updatelf és SubmitForm) kétféleképpen jelentik a hibákat:

  • Ezek a függvények a művelet eredményeként egy hibaértéket ad vissza. Errors az IsError használatával észlelhető, és a szokásos módon lecserélhető vagy letiltható az IfError és az App.OnError. További információt lásd: Hibakezelés.
  • A művelet után a függvény az Errors előző műveletek hibáit is visszaadja. Hasznos lehet, ha a hibaüzenetet egy űrlap képernyőjén jeleníti meg anélkül, hogy rögzítenie kellene a hibát egy állapotváltozóban.

Bizonyos hibák már az előfordulásuk előtt is elkerülhetők a Validate és a DataSourceInfo függvény használatával. A hibák kezeléséről és elkerüléséről az adatforrások kezelésével kapcsolatos témakörben találhat további javaslatokat.

Ismertetés

A Errors függvény a következő oszlopokat tartalmazó hibatáblát adja vissza:

  • Rekord. Az adatforrás azon rekordja, amelyben a hiba jelentkezett. Ha a hiba egy rekord létrehozása során történt, ez az oszlop üres.
  • Oszlop. A hibát okozó oszlop, ha a hiba egyetlen oszlopnak tulajdonítható. Ha nem, üres.
  • Üzenet. A hiba leírása. Ez a hibasztring megjeleníthető a végfelhasználó számára. Ezt az üzenetet az adatforrás hozhatja létre, és hosszú lehet, és olyan nyers oszlopneveket tartalmazhat, amelyek nem feltétlenül jelentenek jelentést a felhasználó számára.
  • Hiba. Egy hibakód, amely képletekben használható a hiba feloldásához:
ErrorKind Ismertetés
ErrorKind.Conflict Egy másik módosítást hajtottak végre ugyanazon a rekordon, és ez a módosítások ütközését eredményezte. Töltse be újra rekordot a Refresh függvénnyel, és próbálja meg újból végrehajtani a módosítást.
ErrorKind.ConstraintViolation Egy vagy több megszorítást megsértettek.
ErrorKind.CreatePermission Az aktuális felhasználó megpróbált létrehozni egy rekordot, de nem rendelkezik a rekordok létrehozásához szükséges jogosultsággal.
ErrorKind.DeletePermission Az aktuális felhasználó megpróbált törölni egy rekordot, de nem rendelkezik a rekordok törléséhez szükséges jogosultsággal.
ErrorKind.EditPermission Az aktuális felhasználó megpróbált szerkeszteni egy rekordot, de nem rendelkezik a rekordok szerkesztéséhez szükséges jogosultsággal.
ErrorKind.GeneratedValue A felhasználó megpróbált módosítani egy olyan oszlopot, amelyet az adatforrás generál automatikusan.
ErrorKind.MissingRequired Az egyik szükséges oszlop értéke hiányzik a rekordból.
ErrorKind.None Nincs hiba.
ErrorKind.NotFound A felhasználó megpróbált törölni vagy szerkeszteni egy rekordot, de a rekordot nem találta a rendszer. Lehetséges, hogy egy másik felhasználó módosította a rekordot.
ErrorKind.ReadOnlyValue A felhasználó megpróbált módosítani egy írásvédett oszlopot.
ErrorKind.Sync Az adatforrás hibát jelentett. Ha további információra van szüksége, ellenőrizze az Üzenet oszlopot.
ErrorKind.Unknown Ismeretlen típusú hiba történt.
ErrorKind.Validation Általános érvényesítési problémát észleltek, amely nem felelt meg a többi típus egyikének.

Errorsa függvény rekordargumentumának megadásával a teljes adatforráshoz, vagy csak egy kijelölt sorhoz adható vissza.

A javítás vagy más adatfüggvény üres értéket adhat vissza , ha például egy rekord nem hozható létre. Üresen adhatja át a Errorselemet, és ezekben az esetekben megfelelő hibainformációkat ad vissza. Az adatforrás adatfüggvényeinek későbbi használata törli ezt a hibainformációt.

Ha nincsenek hibák, a visszaadott tábla Errorsüres lesz, és az IsEmpty függvénnyel tesztelhető.

Szintaxis

Errors( DataSource [, Record ] )

  • DataSource – Kötelező. Annak az adatforrásnak a neve, amelynek a hibáit keresi.
  • Rekord – Nem kötelező. Egy konkrét rekord, amelynek a hibáit keresi. Ha ez az argumentum nincs megadva, a függvény a teljes adatforrásra vonatkozóan adja vissza a hibákat.

Példák

Lépésről lépésre

Ebben a példában az IceCream adatforrással fogunk dolgozni, amely egy olyan adatforrás, amelyhez a Power Apps megpróbálja észlelni az ütközéseket:

Fagylalt.

Megjegyzés:

A Power Apps nem próbálja észlelni a Dataverse-táblák módosításainak ütközéseit.

Egy felhasználó az alkalmazásban betölti a Csokoládé rekordot egy adatbeviteli űrlapra, és a Mennyiség értékét 90-re módosítja. A rendszer az EditRecord környezeti változóban helyezi el a kezelendő rekordot:

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

Ez a módosítás a Patch függvénnyel végezhető el az adatforrásban:

  • Patch( IceCream, EditRecord, Gallery.Updates )

Ahol a Gallery.Updates értéke { Quantity: 90 }, mivel csak a Quantity tulajdonság módosult.

Sajnos azonban közvetlenül a Patch függvény hívása előtt valaki más módosította a Csokoládéhoz tartozó Mennyiség tulajdonságot 80-ra. Mivel ez egy támogatott adatforrás az ütközések észleléséhez, a Power Apps ezt észleli, és nem engedélyezi az ütköző módosítást. Az alábbi képlettel ellenőrizhető, hogy fennáll-e ez a helyzet:

  • IsEmpty( Errors( IceCream, EditRecord ) )

Ez hamis értéket ad vissza, mert a Errors függvény a következő táblát adja vissza:

Rekord Oszlop Üzenet Hiba
{ Íz: "Csokoládé", Mennyiség: 100 } üres „Egy másik felhasználó módosította a rekordot, amelyet módosítani próbál. Töltse be újra a rekordot, és próbálkozzon újra." ErrorKind.Conflict

Elhelyezhet egy címkét az űrlapon, amellyel jelezheti a hibát a felhasználó számára.

  • A hiba megjelenítéséhez a címke Text (Szöveg) tulajdonságát állítsa be a következő képletre:
    Label.Text = First(Errors( IceCream, EditRecord )). Üzenet

Egy Újratöltés gombot is elhelyezhet a lapon, hogy a felhasználó egyszerűbben feloldhassa az ütközést.

  • Ha azt szeretné, hogy a rendszer csak akkor jelenítse meg a gombot, ha ütközést észlel, állítsa a gomb Visible (Látható) tulajdonságát a következő képletre:
    ! IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • Ha vissza szeretné állítani a módosítást, amelyet a felhasználó kiválaszt a gombra, állítsa be az OnSelect tulajdonságát a következő képletre:
    ReloadButton.OnSelect = visszaállít( IceCream, EditRecord )