שתף באמצעות


הפונקציה Errors

חל על: אפליקציות קנבס אפליקציות מונחות דגמים

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

מבט כולל

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

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

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

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

תיאור

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

  • רְשׁוּמָה. הרשומה במקור הנתונים שכוללת את השגיאה. אם השגיאה התרחשה במהלך יצירת רשומה, עמודה זו תהיה blank.
  • עַמוּדָה. העמודה שגרמה לשגיאה, אם ניתן לייחס את השגיאה לעמודה בודדת. אם לא, היא תהיה blank.
  • הוֹדָעָה. תיאור השגיאה. ניתן להציג מחרוזת שגיאה זו עבור משתמש הקצה. שים לב שהודעה זו עשויה להיווצר על-ידי מקור הנתונים, והיא עשויה להיות ארוכה ולהכיל שמות עמודות גולמיים שאין להם משמעות עבור המשתמש.
  • שְׁגִיאָה. קוד שגיאה שניתן להשתמש בו בנוסחאות כדי לסייע בפתרון השגיאה:
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‎.

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

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

תחביר

שגיאות ( מקור נתונים [, רְשׁוּמָה ] )

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

דוגמאות

שלב אחר שלב

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

גלידה.

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

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "שוקולד") } )

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

  • תיקון ( IceCream, EditRecord, Gallery.Updates )

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

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

  • IsEmpty( שגיאות ( IceCream, EditRecord ) )

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

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

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

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

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

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