Megosztás a következőn keresztül:


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:

Fagylalt.

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 )