ฟังก์ชัน AsType และ IsType
ใช้กับ: แอปพื้นที่ทำงาน
แอปแบบจำลอง
Power Pages
Power Platform CLI
ตรวจสอบการอ้างอิงเรกคอร์ดสำหรับประเภทตารางเฉพาะ (IsType) และถือว่าการอ้างอิงเป็นชนิดเฉพาะ (AsType)
หมายเหตุ
คำสั่ง PAC CLI pac power-fx ไม่สนับสนุน IsType
Description
อ่าน ทำความเข้าใจการอ้างอิงเรกคอร์ดและการค้นหา polymorphic สำหรับการแนะนำที่กว้างขึ้นและรายละเอียดเพิ่มเติม
ฟิลด์การค้นหามักจะอ้างอิงถึงเรกคอร์ดในตารางใดตารางหนึ่ง เนื่องจากชนิดของตารางมีการกำหนดไว้อย่างดี คุณจึงสามารถเข้าถึงฟิลด์ของการค้นหาได้โดยใช้เครื่องหมายจุดอย่างง่าย ตัวอย่างเช่น First( Accounts ).'Primary Contact'.'Full Name' เริ่มจากตาราง บัญชีลูกค้าองค์กร ไปที่เรกคอร์ด ผู้ติดต่อหลัก ในตาราง ผู้ติดต่อ และแยกฟิลด์ ชื่อเต็ม
Microsoft Dataverse ยังสนับสนุนฟิลด์การค้นหาแบบ polymorphic ซึ่งสามารถอ้างถึงเรกคอร์ดจากชุดของตารางได้ดังในตัวอย่างเหล่านี้
ฟิลด์การค้นหา | สามารถอ้างอิงไปยัง |
---|---|
เจ้าของ | ผู้ใช้ หรือ Teams |
ลูกค้า | บัญชี หรือ ผู้ติดต่อ |
เกี่ยวกับ | บัญชี ผู้ติดต่อ บทความความรู้ ฯลฯ |
ในสูตรพื้นที่ทำงาน ให้ใช้การอ้างอิงเรกคอร์ดเพื่อทำงานกับการค้นหาแบบหลายรูปแบบ เนื่องจากการอ้างอิงเรกคอร์ดสามารถอ้างอิงถึงตารางต่างๆ คุณจึงไม่ทราบว่าฟิลด์ใดจะพร้อมใช้งานเมื่อคุณเขียนสูตร เครื่องหมาย Record.Field ไม่สามารถใช้ได้ สูตรเหล่านั้นจะต้องปรับให้เข้ากับเรกคอร์โที่แอปพบเมื่อทำงาน
ฟังก์ชัน IsType จะทดสอบว่าการอ้างอิงฟังก์ชันอ้างอิงถึงชนิดตารางเฉพาะหรือไม่ ฟังก์ชันส่งคืน Boolean TRUE หรือ FALSE
ฟังก์ชัน AsType ถือว่าการอ้างอิงเรกคอร์ดเป็นชนิดตารางเฉพาะ ซึ่งบางครั้งเรียกว่า การคัดเลือกตัวแสดง คุณสามารถใช้ผลลัพธ์ราวกับว่าเป็นเรกคอร์ดของตารางและใช้สัญกรณ์ Record.Field อีกครั้งเพื่อเข้าถึงฟิลด์ทั้งหมดของเรกคอร์ดนั้น ข้อผิดพลาดเกิดขึ้นหากการอ้างอิงไม่ได้เป็นประเภทที่เฉพาะเจาะจง
ใช้ฟังก์ชันเหล่านี้ร่วมกันเพื่อทดสอบชนิดตารางของเรกคอร์ดก่อน แล้วจึงถือว่าเป็นเรกคอร์ดชนิดนั้นเพื่อให้มีฟิลด์ต่างๆ
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
คุณต้องการฟังก์ชันเหล่านี้เฉพาะเมื่อคุณเข้าถึงฟิลด์ของการอ้างอิงเรกคอร์ด ตัวอย่างเช่น คุณสามารถใช้การอ้างอิงเรกคอร์ดในฟังก์ชัน Filter โดยไม่มี isType หรือ AsType:
Filter( Accounts, Owner = First( Users ) )
ในทำนองเดียวกัน คุณสามารถใช้การอ้างอิงเรกคอร์ดด้วยฟังก์ชัน Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
หากใช้ในบริบทเรกคอร์ด เช่น ภายในคัวควบคุม Gallery หรือ Edit form คุณอาจต้องใช้ ตัวดำเนินการแก้ความกำกวมส่วนกลาง เพื่ออ้างอิงชนิดตาราง ตัวอย่างเช่น สูตรนี้จะมีผลบังคับใช้กับแกลเลอรีที่แสดงรายการผู้ติดต่อที่ ชื่อบริษัท เป็นการค้นหา ลูกค้า:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
สำหรับทั้งสองฟังก์ชัน คุณต้องระบุชนิดโดยใช้ชื่อของแหล่งข้อมูลที่เชื่อมต่อกับตาราง เพื่อให้สูตรทำงานได้ คุณต้องเพิ่มแหล่งข้อมูลลงในแอปสำหรับประเภทใดๆ ที่คุณต้องการทดสอบหรือคำนวณ ตัวอย่างเช่น คุณต้องเพิ่มตาราง ผู้ใช้ เป็นแหล่งข้อมูล หากคุณต้องการใช้ IsType และ AsType ด้วยการค้นหาและเรกคอร์ด เจ้าของ จากตารางนั้น คุณสามารถเพิ่มได้เฉพาะแหล่งข้อมูลที่คุณใช้จริงในแอปของคุณเท่านั้น คุณไม่จำเป็นต้องเพิ่มตารางทั้งหมดที่การค้นหาสามารถอ้างอิงได้
หากเรกคอร์ดอ้างอิง ว่างเปล่า IsType ส่งคืน FALSE และ AsType ส่งคืน ว่างเปล่า ทุกฟิลด์เรกคอร์ด ว่างเปล่า จะเป็น ว่างเปล่า
ไวยากรณ์
AsType( RecordReference, TableType )
- RecordReference - จำเป็น การอ้างอิงเรกคอร์ด ซึ่งมักจะเป็นฟิลด์การค้นหาที่สามารถอ้างอิงถึงเรกคอร์ดในตารางใดก็ได้
- TableType - จำเป็น ตารางเฉพาะที่ควรส่งบันทึก
IsType( RecordReference, TableType )
- RecordReference - จำเป็น การอ้างอิงเรกคอร์ด ซึ่งมักจะเป็นฟิลด์การค้นหาที่สามารถอ้างอิงถึงเรกคอร์ดในตารางใดก็ได้
- TableType - จำเป็น ตารางเฉพาะที่จะทดสอบ
ตัวอย่างเช่น
ทำความเข้าใจการอ้างอิงเรกคอร์ดและการค้นหา polymorphic มีตัวอย่างมากมาย
สร้างแอปพื้นที่ทำงานเปล่าสำหรับแท็บเล็ต
บนบานหน้าต่างด้านซ้าย เลือก ข้อมูล>เพิ่มข้อมูล แล้วเพิ่มตาราง บัญชีลูกค้าองค์กร และ ผู้ติดต่อ
ที่บานหน้าต่างด้านซ้าย เลือก + (แทรก) >เค้าโครง>แกลเลอรีแนวตั้งว่างเปล่า
เลือก เชื่อมต่อกับข้อมูล แล้วเลือก ผู้ติดต่อ เป็นแหล่งข้อมูล
ตั้งค่าเค้าโครงของแกลเลอรี่เป็น ชื่อและคำบรรยาย
ในบานหน้าต่าง ข้อมูล เปิดรายการ Title1 จากนั้นเลือก ชื่อเต็ม
เลือกตัวควบคุมป้ายชื่อ Subtitle1
ตั้งค่าคุณสมบัติ Text ของ Subtitle1 เป็นสูตรนี้:
If( IsBlank( ThisItem.'Company Name' ), "--", IsType( ThisItem.'Company Name', Accounts ), "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name', "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name' )
คำบรรยายในแกลเลอรีแสดงค่าเหล่านี้:
- "-" ถ้าหาก 'ชื่อ บริษัท' เป็น ว่างเปล่า
- "บัญชี:" แล้วก็ฟิลด์ ชื่อบัญชี จากตาราง บัญชี ถ้าฟิลด์ ชื่อบริษัท หมายถึงบัญชี
- "ผู้ติดต่อ:" แล้วก็ฟิลด์ ชื่อเต็ม จากตาราง ผู้ติดต่อ ถ้าฟิลด์ ชื่อบริษัท หมายถึงผู้ติดต่อ
ผลลัพธ์ของคุณอาจแตกต่างจากในหัวข้อนี้ เนื่องจากใช้ข้อมูลตัวอย่างที่ได้รับการแก้ไขเพื่อแสดงผลลัพธ์ประเภทเพิ่มเติม