ฟังก์ชัน Errors
ใช้กับ: แอป Canvas แอปที่ขับเคลื่อนด้วยโมเดล
แสดงข้อมูลข้อผิดพลาดของการเปลี่ยนแปลงครั้งก่อนหน้าไปยัง แหล่งข้อมูล
ภาพรวม
ข้อผิดพลาดสามารถเกิดขึ้นได้เมื่อ เรกคอร์ด ของแหล่งข้อมูลถูกเปลี่ยนแปลง มีหลายสาเหตุเป็นไปได้ รวมถึงการใช้งานเครือข่าย สิทธิ์การใช้งานไม่เพียงพอ และข้อขัดแย้งการแก้ไข
ฟังก์ชันที่ปรับเปลี่ยนข้อมูลในแหล่งข้อมูล เช่น Patch, Collect, Remove, RemoveIf, Update, UpdateIf และ SubmitForm จะรายงานข้อผิดพลาดสองแบบ:
- แต่ละฟังก์ชันเหล่านี้จะส่งคืนค่าข้อผิดพลาดเป็นผลลัพธ์ของการดำเนินการ ตรวจพบข้อผิดพลาดได้ด้วย IsError และมีการแทนที่หรือระงับด้วย IfError และ App.OnError ตามปกติ ดูที่ การจัดการข้อผิดพลาด สำหรับข้อมูลเพิ่มเติม
- หลังจากการดำเนินการ ฟังก์ชัน Errors จะส่งคืนข้อผิดพลาดสำหรับการดำเนินการก่อนหน้านี้ด้วย ซึ่งจะมีประโยชน์สำหรับการแสดงข้อความแสดงข้อผิดพลาดบนหน้าจอแบบฟอร์มโดยไม่จำเป็นต้องจับภาพข้อผิดพลาดในตัวแปรสถานะ
คุณสามารถหลีกเลี่ยงข้อผิดพลาดบางอย่างก่อนที่จะเกิดขึ้นได้ โดยใช้ฟังก์ชัน Validate และ DataSourceInfo ดู การทำงานกับแหล่งข้อมูล สำหรับคำแนะนำเพิ่มเติมเกี่ยวกับวิธีการทำงานร่วมกัน และการหลีกเลี่ยงข้อผิดพลาด
คำอธิบาย
ฟังก์ชัน Errors จะส่งกลับ ตาราง ของข้อผิดพลาดที่ประกอบด้วย คอลัมน์ต่อไปนี้:
- บันทึก. เรกคอร์ดในแหล่งข้อมูลที่มีข้อผิดพลาด ถ้าข้อผิดพลาดเกิดขึ้นระหว่างการสร้างเรกคอร์ด คอลัมน์นี้จะ ว่างเปล่า
- คอลัมน์. คอลัมน์ที่ทำให้เกิดข้อผิดพลาด ถ้าข้อผิดพลาดสามารถกำหนดแอตทริบิวต์ให้เป็นคอลัมน์เดียว ถ้าไม่ จะเป็น ว่างเปล่า
- ข้อความ. คำอธิบายของข้อผิดพลาด สตริงข้อผิดพลาดนี้สามารถถูกแสดงสำหรับผู้ใช้ปลายทางได้ โปรดทราบว่าข้อความนี้อาจถูกสร้างขึ้นโดยแหล่งข้อมูล และอาจมีความยาวและอาจประกอบด้วยชื่อของคอลัมน์ดิบ ที่อาจไม่มีความหมายใดๆ กับผู้ใช้ก็ได้
- ข้อผิดพลาด. รหัสข้อผิดพลาดที่สามารถใช้ในสูตรเพื่อช่วยแก้ไขข้อผิดพลาด:
ErrorKind | คำอธิบาย |
---|---|
ErrorKind.Conflict | การเปลี่ยนแปลงอื่นถูกทำไปยังเรกคอร์ดเดียวกัน ทำให้เกิดข้อขัดแย้งในการเปลี่ยนแปลง ใช้ฟังก์ชัน Refresh เพื่อโหลดเรกคอร์ด แล้วลองเปลี่ยนแปลงอีกครั้ง |
ErrorKind.ConstraintViolation | มีการละเมิดข้อจำกัดอย่างน้อยหนึ่งหรือมากกว่า |
ErrorKind.CreatePermission | มีความพยายามในการสร้างเรกคอร์ด และผู้ใช้ปัจจุบันไม่มีสิทธิ์ในการสร้างเรกคอร์ด |
ErrorKind.DeletePermission | มีความพยายามในการลบเรกคอร์ด และผู้ใช้ปัจจุบันไม่มีสิทธิ์ในการลบเรกคอร์ด |
ErrorKind.EditPermission | มีความพยายามในการแก้ไขเรกคอร์ด และผู้ใช้ปัจจุบันไม่มีสิทธิ์ในการแก้ไขเรกคอร์ด |
ErrorKind.GeneratedValue | มีการพยายามในการเปลี่ยนแปลงคอลัมน์ที่แหล่งข้อมูลสร้างขึ้นโดยอัตโนมัติ |
ErrorKind.MissingRequired | ค่าสำหรับคอลัมน์ที่จำเป็นขาดหายไปจากเรกคอร์ด |
ErrorKind.None | ไม่มีข้อผิดพลาด |
ErrorKind.NotFound | มีความพยายามในการแก้ไขหรือลบเรกคอร์ด แต่ไม่พบเรกคอร์ด ผู้ใช้อื่นอาจเปลี่ยนแปลงเรกคอร์ดแล้ว |
ErrorKind.ReadOnlyValue | มีความพยายามในการเปลี่ยนแปลงคอลัมน์ที่เป็นแบบอ่านอย่างเดียว |
ErrorKind.Sync | มีการรายงานข้อผิดพลาดโดยแหล่งข้อมูล ตรวจสอบคอลัมน์ข้อความสำหรับข้อมูลเพิ่มเติม |
ErrorKind.Unknown | เกิดข้อผิดพลาดขึ้น แต่เป็นชนิดที่ไม่รู้จัก |
ErrorKind.Validation | ตรวจพบปัญหาการตรวจสอบความถูกต้องทั่วไป ซึ่งไม่ตรงกับหนึ่งในปัญหาประเภทอื่นๆ |
ข้อผิดพลาดสามารถถูกส่งกลับสำหรับแหล่งข้อมูลทั้งหมดหรือเฉพาะแถวที่เลือกได้ โดยการให้อาร์กิวเมนต์ เรกคอร์ด แก่ฟังก์ชัน
แพทช์ หรือฟังก์ชันข้อมูลอื่นอาจส่งคืน ว่างเปล่า ค่าถ้าเช่นไม่สามารถสร้างบันทึกได้ คุณสามารถส่ง ว่างเปล่า ไปยัง ข้อผิดพลาด ได้ และจะมีการส่งกลับข้อมูลข้อผิดพลาดที่เหมาะสมในกรณีเหล่านี้คืนมา การใช้ฟังก์ชันข้อมูลบนแหล่งข้อมูลเดียวกันในเวลาต่อมา จะล้างข้อมูลข้อผิดพลาดนี้
ถ้าไม่มีข้อผิดพลาด ตารางที่ Errors ส่งกลับจะเป็น ว่างเปล่า และสามารถทดสอบได้ด้วยฟังก์ชัน IsEmpty
ไวยากรณ์
ข้อผิดพลาด - แหล่งข้อมูล - บันทึก -
- DataSource – จำเป็น แหล่งข้อมูลที่คุณต้องการสงกลับข้อผิดพลาด
- บันทึก - ไม่จำเป็น. เรกคอร์ดเฉพาะที่คุณต้องการส่งกลับข้อผิดพลาด ถ้าคุณไม่ได้ระบุอาร์กิวเมนต์นี้ ฟังก์ชันจะส่งกลับข้อผิดพลาดสำหรับแหล่งข้อมูลทั้งหมด
ตัวอย่าง
ทีละขั้นตอน
สำหรับตัวอย่างนี้ เราจะทำงานกับแหล่งข้อมูล e IceCream:
ผ่านทางแอป ผู้ใช้จะโหลดเรกคอร์ดช็อกโกแลต ลงในฟอร์มการใส่ข้อมูล แล้วเปลี่ยนค่าของ ปริมาณ เป็น 90 เรกคอร์ดที่จะใช้งานจะถูกวางไว้ใน ตัวแปรบริบทEditRecord:
- UpdateContext( { EditRecord: LookUp(ไอศกรีม, รสชาติ = "ช็อคโกแลต") } -
เมื่อต้องเปลี่ยนแปลงในแหล่งข้อมูล ให้ใช้ฟังก์ชัน Patch:
- แพทช์ (ไอศกรีม, แก้ไขบันทึก, แกลเลอรี่อัปเดต)
ที่ซึ่ง Gallery.Updates ประเมิน { Quantity: 90 } ตั้งแต่เมื่อคุณสมบัติ Quantity ถูกปรับเปลี่ยนเท่านั้น
น่าเสียดาย ก่อนฟังก์ชัน Patch จะถูกเรียกใช้ บุคคลอื่นได้ปรับเปลี่ยน ปริมาณ ของช็อกโกแลต เป็น 80 แล้ว Power Apps จะตรวจหาสิ่งนี้และไม่อนุญาตให้การเปลี่ยนแปลงที่ขัดแย้งกันเกิดขึ้น คุณสามารถตรวจสอบสถานการณ์นี้ได้ด้วยสูตร:
- IsEmpty( ข้อผิดพลาด( ไอศกรีม, แก้ไขบันทึก ) )
ซึ่งส่งคืนค่า Errors เนื่องจากฟังก์ชัน ข้อผิดพลาด ส่งกลับตารางต่อไปนี้:
เรกคอร์ด | คอลัมน์ | ข้อความ | ข้อผิดพลาด |
---|---|---|---|
{ Flavor: "Chocolate", Quantity: 100 } | ว่างเปล่า | "ผู้ใช้อื่นได้ปรับเปลี่ยนเรกคอร์ดที่คุณกำลังพยายามปรับเปลี่ยนแล้ว โปรดโหลดเรกคอร์ดใหม่ แล้วลองอีกครั้ง” | ErrorKind.Conflict |
คุณสามารถวางป้ายกำกับบนฟอร์มเพื่อแสดงข้อผิดพลาดนี้ให้กับผู้ใช้ได้
- เมื่อต้องการแสดงข้อผิดพลาด ให้ตั้งค่าคุณสมบัติ Text ของป้ายกำกับเป็นสูตรนี้:
ป้ายข้อความ = First(ข้อผิดพลาด(ไอศกรีม, แก้ไขบันทึก)).ข้อความ
คุณยังสามารถเพิ่มปุ่ม โหลดใหม่ บนฟอร์มเพื่อให้ผู้ใช้สามารถแก้ไขข้อขัดแย้งได้อย่างมีประสิทธิภาพได้
- การแสดงปุ่มเฉพาะเวลาที่เกิดข้อขัดแย้งขึ้น ให้ตั้งค่าคุณสมบัติ Visible ของปุ่ม ให้เป็นสูตรดังนี้:
!IsEmpty( ค้นหา( ข้อผิดพลาด( ไอศกรีม, แก้ไขระเบียน ), ข้อผิดพลาด = ErrorKind.Conflict ) ) - การแปลงกลับการเปลี่ยนแปลงเมื่อผู้ใช้เลือกปุ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:
ReloadButton.OnSelect = แปลงกลับ(ไอศกรีม, แก้ไขบันทึก)