Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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:
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 )