Hibák funkció
A következőkre vonatkozik: Vászonalapú alkalmazások Modellvezérelt 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
Hibák általában az adatforrások rekordjainak módosításakor fordulnak 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:
- Ezen függvények mindegyike hibaértéket ad vissza a művelet eredményeként. A hibák az IsError használatával észlelhetők, illetve az IfError és az App.OnError használatával helyettesíthetők vagy visszavonhatók. További információt lásd: Hibakezelés.
- A művelet után az Errors függvény visszaadja a korábbi műveletek hibáit is. A segítségével megjeleníthető egy hibaüzenet az űrlapképernyőn anélkül, hogy a hibát állapotváltozóban kellene rögzíteni.
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
Az Errors függvény egy hibákból álló táblát ad vissza, amely a következő oszlopokat tartalmazza:
- Rekord. Az adatforrás azon rekordja, amelyben a hiba jelentkezett. Ha a hiba egy rekord létrehozása közben történt, ez az oszlop üres marad.
- Oszlop. A hibát okozó oszlop, ha a hiba egyetlen oszlopnak tulajdonítható. Ellenkező esetben ez a mező üres lesz.
- Üzenet. A hiba leírása. Ez a hibasztring megjeleníthető a végfelhasználó számára. Vegye figyelembe, hogy ezt az üzenetet valószínűleg az adatforrás generálja, ezért előfordulhat, hogy hosszú lesz, és olyan nyers oszlopneveket tartalmaz, amelyeket a felhasználó nem ismer.
- 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 | Olyan általános érvényesítési probléma merült fel, amely egyik hibatípusba sem volt besorolható. |
A hibák a teljes adatforrásra, illetve a függvény Rekord argumentumának megadása esetén egy bizonyos sorra vonatkozóan is visszaadhatók.
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. Ha az Errors függvény végrehajtásához üres értéket ad át, akkor a megfelelő hibainformációkat adja vissza. Ha az adatfüggvények újra ugyanazon az adatforráson használja, a rendszer törli ezeket a hibainformációkat.
Ha nincsenek hibák, az Errors által visszaadott tábla üres lesz; a tábla az IsEmpty függvénnyel ellenőrizhető.
Szintaxis
Hibák( 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 a Jégkrém adatforrással fogunk dolgozni:
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 kiértékelt értéke { Mennyiség: 90 }, mivel csak a Mennyiség 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. A Power Apps ezt észlelni fogja, és nem engedélyezi az ütköző módosítás végrehajtását. Az alábbi képlettel ellenőrizhető, hogy fennáll-e ez a helyzet:
- IsEmpty( Errors( IceCream, EditRecord ) )
amely false (hamis) értéket fog visszaadni, mert az Errors függvény az alábbi táblázatot adta 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 azt szeretné, hogy a gomb használatakor a rendszer visszaállítsa a módosítást, állítsa a gomb OnSelect (Kijelöléskor) tulajdonságát a következő képletre:
ReloadButton.OnSelect = visszaállít( IceCream, EditRecord )