หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
นําไปใช้กับ: แอป
พื้นที่ทํางานแอปแบบจําลองข้อมูล
แสดงข้อมูลข้อผิดพลาดของการเปลี่ยนแปลงครั้งก่อนหน้าไปยัง แหล่งข้อมูล
ภาพรวม
Errors สามารถเกิดขึ้นได้เมื่อ ระเบียน ของแหล่งข้อมูลถูกเปลี่ยนแปลง มีหลายสาเหตุเป็นไปได้ รวมถึงการใช้งานเครือข่าย สิทธิ์การใช้งานไม่เพียงพอ และข้อขัดแย้งการแก้ไข
ฟังก์ชันที่ปรับเปลี่ยนข้อมูลในแหล่งข้อมูล เช่น Patch, Collect, Remove, RemoveIf, Update, UpdateIf และ SubmitForm จะรายงานข้อผิดพลาดสองแบบ:
- แต่ละฟังก์ชันเหล่านี้คืนค่าข้อผิดพลาดเป็นผลลัพธ์ของการดําเนินการ Errors สามารถตรวจพบได้ด้วย 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 สามารถแสดงผลลัพธ์สําหรับแหล่งข้อมูลทั้งหมด หรือเฉพาะแถวที่เลือกได้โดยการให้อาร์กิวเมนต์ Record แก่ฟังก์ชัน
แพทช์ หรือฟังก์ชันข้อมูลอื่นอาจส่งคืน ว่างเปล่า ค่าถ้าเช่นไม่สามารถสร้างบันทึกได้ คุณสามารถส่ง ว่างเปล่า ไปยัง Errorsและจะส่งกลับข้อมูลข้อผิดพลาดที่เหมาะสมในกรณีเหล่านี้ การใช้ฟังก์ชันข้อมูลบนแหล่งข้อมูลเดียวกันในเวลาต่อมาจะล้างข้อมูลข้อผิดพลาดนี้
ถ้าไม่มีข้อผิดพลาด ตารางที่Errorsส่งกลับจะว่างเปล่าและสามารถทดสอบได้ด้วยฟังก์ชัน IsEmpty
ไวยากรณ์
Errors( DataSource [, Record ] )
- DataSource – จำเป็น แหล่งข้อมูลที่คุณต้องการสงกลับข้อผิดพลาด
- บันทึก - ไม่จำเป็น. เรกคอร์ดเฉพาะที่คุณต้องการส่งกลับข้อผิดพลาด ถ้าคุณไม่ได้ระบุอาร์กิวเมนต์นี้ ฟังก์ชันจะส่งกลับข้อผิดพลาดสำหรับแหล่งข้อมูลทั้งหมด
ตัวอย่าง
ทีละขั้นตอน
สําหรับตัวอย่างนี้ เราจะทํางานกับแหล่งข้อมูล ไอศกรีม ซึ่งเป็นแหล่งข้อมูลที่ Power Apps จะพยายามตรวจหาความขัดแย้ง:
Note
Power Apps ไม่พยายามตรวจหาข้อขัดแย้งสําหรับการเปลี่ยนแปลงในตาราง Dataverse
ผ่านทางแอป ผู้ใช้จะโหลดเรกคอร์ดช็อกโกแลต ลงในฟอร์มการใส่ข้อมูล แล้วเปลี่ยนค่าของ ปริมาณ เป็น 90 เรกคอร์ดที่จะใช้งานจะถูกวางไว้ใน ตัวแปรบริบทEditRecord:
- UpdateContext( { EditRecord: LookUp(ไอศกรีม, รสชาติ = "ช็อคโกแลต") } -
เมื่อต้องเปลี่ยนแปลงในแหล่งข้อมูล ให้ใช้ฟังก์ชัน Patch:
- แพทช์ (ไอศกรีม, แก้ไขบันทึก, แกลเลอรี่อัปเดต)
ที่ ซึ่ง Gallery.Updates ประเมินเป็น { Quantity: 90 } เนื่องจากเฉพาะ ปริมาณ เท่านั้นที่ถูกปรับเปลี่ยนคุณสมบัติ
น่าเสียดาย ก่อนฟังก์ชัน Patch จะถูกเรียกใช้ บุคคลอื่นได้ปรับเปลี่ยน ปริมาณ ของช็อกโกแลต เป็น 80 แล้ว เนื่องจากนี่เป็นแหล่งข้อมูลที่ได้รับการสนับสนุนสําหรับการตรวจหาความขัดแย้ง Power Apps จะตรวจหาสิ่งนี้และไม่อนุญาตให้มีการเปลี่ยนแปลงที่ขัดแย้งกันเกิดขึ้น คุณสามารถตรวจสอบสถานการณ์นี้ได้ด้วยสูตร:
- IsEmpty( Errors( IceCream, EditRecord ) )
ซึ่งส่งกลับ false เนื่องจาก Errors ฟังก์ชันส่งกลับตารางต่อไปนี้:
| เรกคอร์ด | คอลัมน์ | ข้อความ | ข้อผิดพลาด |
|---|---|---|---|
| { รสชาติ: "ช็อกโกแลต", ปริมาณ: 100 } | ว่างเปล่า | "ผู้ใช้อื่นได้ปรับเปลี่ยนเรกคอร์ดที่คุณกำลังพยายามปรับเปลี่ยนแล้ว โหลดระเบียนใหม่แล้วลองอีกครั้ง" | ErrorKind.Conflict |
คุณสามารถวางป้ายกำกับบนฟอร์มเพื่อแสดงข้อผิดพลาดนี้ให้กับผู้ใช้ได้
- เมื่อต้องการแสดงข้อผิดพลาด ให้ตั้งค่าคุณสมบัติ Text ของป้ายกำกับเป็นสูตรนี้:
Label.Text = First(Errors( IceCream, EditRecord )) ข้อความ
คุณยังสามารถเพิ่มปุ่ม โหลดใหม่ บนฟอร์มเพื่อให้ผู้ใช้สามารถแก้ไขข้อขัดแย้งได้อย่างมีประสิทธิภาพได้
- การแสดงปุ่มเฉพาะเวลาที่เกิดข้อขัดแย้งขึ้น ให้ตั้งค่าคุณสมบัติ Visible ของปุ่ม ให้เป็นสูตรดังนี้:
! IsEmpty( Lookup( Errors( ไอศกรีม, EditRecord ), Error = ErrorKind.Conflict ) ) - เมื่อต้องการแปลงกลับการเปลี่ยนแปลง ซึ่งผู้ใช้เลือกปุ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
ReloadButton.OnSelect = แปลงกลับ(ไอศกรีม, แก้ไขบันทึก)