แชร์ผ่าน


ฟังก์ชัน Errors

นําไปใช้กับ: แอป พื้นที่ทํางานแอปแบบจําลองข้อมูล

แสดงข้อมูลข้อผิดพลาดของการเปลี่ยนแปลงครั้งก่อนหน้าไปยัง แหล่งข้อมูล

ภาพรวม

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 จะพยายามตรวจหาความขัดแย้ง:

Ice Cream

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 = แปลงกลับ(ไอศกรีม, แก้ไขบันทึก)