แชร์ผ่าน


ฟังก์ชัน Errors

ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง

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

ภาพรวม

ข้อผิดพลาดสามารถเกิดขึ้นได้เมื่อ เรกคอร์ด ของแหล่งข้อมูลถูกเปลี่ยนแปลง มีหลายสาเหตุเป็นไปได้ รวมถึงการใช้งานเครือข่าย สิทธิ์การใช้งานไม่เพียงพอ และข้อขัดแย้งการแก้ไข

ฟังก์ชันที่ปรับเปลี่ยนข้อมูลในแหล่งข้อมูล เช่น 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 ตรวจพบปัญหาการตรวจสอบความถูกต้องทั่วไป ซึ่งไม่ตรงกับหนึ่งในปัญหาประเภทอื่นๆ

ข้อผิดพลาดสามารถถูกส่งกลับสำหรับแหล่งข้อมูลทั้งหมดหรือเฉพาะแถวที่เลือกได้ โดยการให้อาร์กิวเมนต์ เรกคอร์ด แก่ฟังก์ชัน

Patch หรือฟังก์ชันข้อมูลอื่นอาจส่งกลับค่า ว่างเปล่า ถ้า ตัวอย่างเช่น ไม่สามารถสร้างเรกคอร์ดได้ คุณสามารถส่ง ว่างเปล่า ไปยัง ข้อผิดพลาด ได้ และจะมีการส่งกลับข้อมูลข้อผิดพลาดที่เหมาะสมในกรณีเหล่านี้คืนมา การใช้ฟังก์ชันข้อมูลบนแหล่งข้อมูลเดียวกันในเวลาต่อมา จะล้างข้อมูลข้อผิดพลาดนี้

ถ้าไม่มีข้อผิดพลาด ตารางที่ Errors ส่งกลับจะเป็น ว่างเปล่า และสามารถทดสอบได้ด้วยฟังก์ชัน IsEmpty

ไวยากรณ์

Errors( DataSource [, Record ] )

  • DataSource – จำเป็น แหล่งข้อมูลที่คุณต้องการสงกลับข้อผิดพลาด
  • เรกคอร์ด - ไม่จำเป็น เรกคอร์ดเฉพาะที่คุณต้องการส่งกลับข้อผิดพลาด ถ้าคุณไม่ได้ระบุอาร์กิวเมนต์นี้ ฟังก์ชันจะส่งกลับข้อผิดพลาดสำหรับแหล่งข้อมูลทั้งหมด

ตัวอย่าง

ทีละขั้นตอน

สำหรับตัวอย่างนี้ เราจะทำงานกับแหล่งข้อมูล e IceCream:

Ice Cream

ผ่านทางแอป ผู้ใช้จะโหลดเรกคอร์ดช็อกโกแลต ลงในฟอร์มการใส่ข้อมูล แล้วเปลี่ยนค่าของ ปริมาณ เป็น 90 เรกคอร์ดที่จะใช้งานจะถูกวางไว้ใน ตัวแปรบริบทEditRecord:

  • UpdateContext( { EditRecord: LookUp( IceCream, รสชาติ = "ช็อกโกแลต" ) } )

เมื่อต้องเปลี่ยนแปลงในแหล่งข้อมูล ให้ใช้ฟังก์ชัน Patch:

  • Patch( IceCream, EditRecord, Gallery.Updates )

ที่ซึ่ง Gallery.Updates ประเมิน { Quantity: 90 } ตั้งแต่เมื่อคุณสมบัติ Quantity ถูกปรับเปลี่ยนเท่านั้น

น่าเสียดาย ก่อนฟังก์ชัน Patch จะถูกเรียกใช้ บุคคลอื่นได้ปรับเปลี่ยน ปริมาณ ของช็อกโกแลต เป็น 80 แล้ว Power Apps จะตรวจหาสิ่งนี้และไม่อนุญาตให้การเปลี่ยนแปลงที่ขัดแย้งกันเกิดขึ้น คุณสามารถตรวจสอบสถานการณ์นี้ได้ด้วยสูตร:

  • IsEmpty( Errors( ไอศกรีม, EditRecord ) )

ซึ่งส่งคืนค่า Errors เนื่องจากฟังก์ชัน ข้อผิดพลาด ส่งกลับตารางต่อไปนี้:

เรกคอร์ด คอลัมน์ ข้อความ ข้อผิดพลาด
{ Flavor: "Chocolate", Quantity: 100 } ว่างเปล่า "ผู้ใช้อื่นได้ปรับเปลี่ยนเรกคอร์ดที่คุณกำลังพยายามปรับเปลี่ยนแล้ว โปรดโหลดเรกคอร์ดใหม่ แล้วลองอีกครั้ง” 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 )