שתף באמצעות


הפונקציה Errors

חל על: יישומי בד ציור יישומים מונחי דגמים

מספקת מידע בנוגע לשגיאות עבור שינויים קודמים שבוצעו במקור נתונים.

מבט כולל

שגיאות עשויות להתרחש בעת שינוי רשומה של מקור נתונים. קיימות סיבות רבות לכך, כולל בעיות ברשת, הרשאות לא מספיקות והתנגשויות עריכה.

הפונקציות שמשנות נתונים במקורות נתונים, כגון תיקון, איסוף, הסרה, RemoveIf, עדכון, UpdateIf, ו-SubmitForm דיווחו על שגיאות בשתי דרכים:

  • כל אחת מהפונקציות הללו תחזיר ערך שגיאה כתוצאה מהפעולה. אפשר לזהות שגיאות ב-IsError ולהחליף או להעלים ב-IfError וב-App.OnError כרגיל. למידע נוסף, ראה טיפול בשגיאות.
  • לאחר הפעולה, הפונקציה שגיאות תחזיר גם את השגיאות עבור פעולות קודמות. זה יכול להיות שימושי להצגת הודעת השגיאה במסך טופס ללא צורך ללכוד את השגיאה במשתנה מצב.

ניתן למנוע שגיאות מסוימות לפני התרחשותן באמצעות הפונקציות Validate‎ ו- DataSourceInfo‎. ראה עבודה עם מקורות נתונים לקבלת הצעות נוספות לעבודה עם טעויות ולהימנעות מהן.

תיאור

הפונקציה Errors‎ מחזירה טבלה של שגיאות שמכילה את העמודות הבאות:

  • Record. הרשומה במקור הנתונים שכוללת את השגיאה. אם השגיאה התרחשה במהלך יצירת רשומה, עמודה זו תהיה blank.
  • Column. העמודה שגרמה לשגיאה, אם ניתן לייחס את השגיאה לעמודה בודדת. אם לא, היא תהיה blank.
  • Message. תיאור השגיאה. ניתן להציג מחרוזת שגיאה זו עבור משתמש הקצה. שים לב שהודעה זו עשויה להיווצר על-ידי מקור הנתונים, והיא עשויה להיות ארוכה ולהכיל שמות עמודות גולמיים שאין להם משמעות עבור המשתמש.
  • Error. קוד שגיאה שניתן להשתמש בו בנוסחאות כדי לסייע בפתרון השגיאה:
ErrorKind תיאור
ErrorKind.Conflict שינוי נוסף בוצע באותה רשומה, כך שנגרמה התנגשות שינויים. השתמש בפונקציה Refresh‎ כדי לטעון מחדש את הרשומה ולנסות שוב את השינוי.
ErrorKind.ConstraintViolation אירעה הפרה של אילוץ אחד או יותר.
ErrorKind.CreatePermission נעשה ניסיון ליצור רשומה, ולמשתמש הנוכחי אין הרשאה ליצור רשומות.
ErrorKind.DeletePermission נעשה ניסיון למחוק רשומה, ולמשתמש הנוכחי אין הרשאה למחוק רשומות.
ErrorKind.EditPermission נעשה ניסיון לערוך רשומה, ולמשתמש הנוכחי אין הרשאה לערוך רשומות.
ErrorKind.GeneratedValue נעשה ניסיון לשנות עמודה אשר מקור הנתונים יוצר באופן אוטומטי.
ErrorKind.MissingRequired ערך עבור עמודה נדרשת חסר ברשומה.
ErrorKind.None אין שגיאה.
ErrorKind.NotFound נעשה ניסיון לערוך או למחוק רשומה, אך הרשומה לא נמצאה. ייתכן שמשתמש אחר שינה את הרשומה.
ErrorKind.ReadOnlyValue נעשה ניסיון לשנות עמודה שמוגדרת לקריאה בלבד.
ErrorKind.Sync מקור הנתונים דיווח על שגיאה. עיין בעמודה Message לקבלת מידע נוסף.
ErrorKind.Unknown אירעה שגיאה, אך מסוג לא ידוע.
ErrorKind.Validation זוהתה בעיית אימות כללית שלא התאימה לאחד מהסוגים האחרים.

תוכל להחזיר שגיאות עבור מקור הנתונים כולו, או עבור שורה נבחרת בלבד, אם תספק לפונקציה את הארגומנט Record‎.

הפונקציה Patch‎ או פונקציית נתונים אחרת עשויה להחזיר ערך ריק אם, לדוגמה, לא הייתה אפשרות ליצור רשומה. ניתן להעביר את blank לפונקציה Errors‎, והיא תחזיר את פרטי השגיאה המתאימים במקרים אלה. שימוש עוקב בפונקציות נתונים על אותו מקור נתונים ינקה את פרטי השגיאה הללו.

אם אין שגיאות, הטבלה שתוחזר על-ידי הפונקציה Errors‎ תהיה ריקה, ותוכל לבדוק אותה באמצעות הפונקציה IsEmpty‎.

תחביר

Errors( DataSource [, Record ] )‎

  • DataSource – נדרש. מקור הנתונים שעבורו ברצונך להחזיר שגיאות.
  • Record – אופציונלי. רשומה ספציפית שעבורה ברצונך להחזיר שגיאות. אם לא תציין ארגומנט זה, הפונקציה תחזיר שגיאות עבור מקור הנתונים כולו.

דוגמאות

שלב אחר שלב

עבור דוגמה זו, נעבוד עם מקור הנתונים IceCream‎:

גלידה.

באמצעות היישום, המשתמש טוען את הרשומה Chocolate לטופס הזנת נתונים ולאחר מכן משנה את הערך של Quantity‎ ל- 90. הרשומה שאיתה הוא יעבוד ממוקמת במשתנה ההקשרEditRecord:

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

כדי לבצע שינוי זה במקור הנתונים, נעשה שימוש בפונקציה Patch‎:

  • Patch( IceCream, EditRecord, Gallery.Updates )‎

כאשר Gallery.Updates מוערך ל- { Quantity: 90 }, מכיוון שרק המשתנה Quantity עבר שינוי.

למרבה הצער, בדיוק לפני הפעלת הפונקציה Patch‎, מישהו אחר שינה את Quantity‎ עבור Chocolate ל- 80.‏ Power Apps יזהה זאת ולא יאפשר לשינוי המתנגש להתרחש. תוכל לבדוק אם מצב זה מתרחש באמצעות הנוסחה:

  • IsEmpty( Errors( IceCream, EditRecord ) )‎

אשר מחזירה false, מכיוון שהפונקציה Errors החזירה את הטבלה הבאה:

רשומה עמודה הודעה שגיאה
{ Flavor: "Chocolate", Quantity: 100‎ } blank "משתמש אחר שינה את הרשומה שאתה מנסה לשנות. ‏טען מחדש את הרשומה ונסה שוב." ErrorKind.Conflict

ניתן למקם תווית בטופס כדי להציג שגיאה זו למשתמש.

  • כדי להציג את השגיאה, קבע את המאפיין Text‎ של התווית לנוסחה הבאה:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

ניתן גם להוסיף לחצן טען מחדש לטופס, כך שהמשתמש יוכל לפתור את ההתנגשות באופן יעיל.

  • כדי להציג את הלחצן רק כאשר מתרחשת התנגשות, קבע את המאפיין Visible‎ של הלחצן לנוסחה הבאה:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )‎
  • כדי לבטל את השינוי כשהמשתמש בוחר את הלחצן, הגדר את המאפיין OnSelect שלו לנוסחה הבאה:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )‎