ฟังก์ชัน Relate และ Unrelate
ใช้กับ: แอป Canvas แอปที่ขับเคลื่อนด้วยโมเดล
เรกคอร์ด Relate และ Unrelate ของสองตารางผ่านความสัมพันธ์แบบหนึ่งต่อกลุ่มหรือกลุ่มต่อกลุ่ม
รายละเอียด
ฟังกัน Relate ลิงก์สองเรกคอร์ดผ่านความสัมพันธ์แบบหนึ่งต่อกลุ่มหรือกลุ่มต่อกลุ่ม ใน Microsoft Dataverse ฟังก์ชัน Unrelate กลับกระบวนการและลบการเชื่อมโยง
สำหรับความสัมพันธ์แบบหนึ่งต่อกลุ่ม ตาราง Many มีฟิลด์คีย์นอกที่ชี้ไปยังเรกคอร์ดของตาราง One Relate ตั้งค่าฟิลด์นี้ให้ชี้ไปยังระเบียนที่ระบุของตารางหนึ่ง ในขณะที่ Unrelate ตั้งค่าฟิลด์นี้เป็น ว่างเปล่า หากฟิลด์ถูกตั้งค่าไว้แล้ว เมือ Relate ถูกเรียก ลิงก์ที่มีอยู่จะหายไปเนื่องจากลิงค์ใหม่ คุณสามารถตั้งค่าฟิลด์นี้ โดยใช้ฟังก์ชัน Patch หรือตัวควบคุม แก้ไขฟอร์ม คุณไม่จำเป็นต้องใช้ฟังก์ชัน Relate
สำหรับ ความสัมพันธ์แบบกลุ่มต่อกลุ่ม ระบบที่ลิงก์เรกคอร์ดจะเก็บรักษาตารางการเข้าร่วมที่ซ่อนอยู่ คุณไม่สามารถเข้าถึงตารางเข้าร่วมนี้โดยตรง จะสามารถอ่านได้ผ่านการประมาณแบบหนึ่งต่อกลุ่ม และตั้งค่าผ่านฟังก์ชัน Relate และ Unrelate ตารางที่เกี่ยวข้องไม่มีคีย์นอก
ข้อมูลสำหรับตารางที่คุณระบุในอาร์กิวเมนต์แรกจะถูกรีเฟรชเพื่อแสดงการเปลี่ยนแปลง แต่ข้อมูลสำหรับตารางที่คุณระบุในอาร์กิวเมนต์ที่สองจะไม่ถูกรีเฟรช ข้อมูลนั้นจะต้องรีเฟรชด้วยตนเอง ด้วยฟังก์ชัน Refresh เพื่อแสดงผลการดำเนินงาน
ฟังก์ชันเหล่านี้ไม่เคยสร้างหรือลบเรกคอร์ด พวกเขาเกี่ยวข้องหรือไม่เกี่ยวข้องสองเรกคอร์ดที่มีอยู่แล้ว
คุณสามารถใช้ฟังก์ชันเหล่านี้ ใน สูตรลักษณะการทำงาน เท่านั้น
หมายเหตุ
ฟังก์ชันเหล่านี้เป็นส่วนหนึ่งของคุณสมบัติการแสดงตัวอย่างและลักษณะการทำงานจะใช้ได้ เมื่อคุณลักษณะ ข้อมูลเชิงสัมพันธ์ ชุดตัวเลือก และคุณสมบัติใหม่อื่นๆ สำหรับ CDS เปิดใช้งาน เท่านั้น นี่เป็นการตั้งค่าระดับแอปที่เปิดใช้งานโดยค่าเริ่มต้นสำหรับแอปใหม่ หากต้องการค้นหาสวิตช์คุณลักษณะนี้ ให้เลือก การตั้งค่า แล้วเลือก คุณลักษณะที่กำลังจะเกิดขึ้น ข้อคิดเห็นของคุณมีประโยชน์กันเรามาก - โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไรใน ฟอรัมชุมชน Power Apps
ไวยากรณ์
เชื่อมโยง( Table1RelatedTable, Table2Record )
- Table1RelatedTable - จำเป็น สำหรับเรกคอร์ดของ Table1 ตารางของเรกคอร์ด Table2 ที่เกี่ยวข้องผ่านความสัมพันธ์แบบหนึ่งต่อกลุ่มหรือแบบกลุ่มต่อกลุ่ม
- Table2Record - จำเป็น เรกคอร์ด Table2 เพื่อเพิ่มความสัมพันธ์
ไม่เกี่ยวข้อง( Table1RelatedTable, Table2Record )
- Table1RelatedTable - จำเป็น สำหรับเรกคอร์ดของ Table1 ตารางของเรกคอร์ด Table2 ที่เกี่ยวข้องผ่านความสัมพันธ์แบบหนึ่งต่อกลุ่มหรือแบบกลุ่มต่อกลุ่ม
- Table2Record - จำเป็น เรกคอร์ด Table2 เพื่อเอาออกจากความสัมพันธ์
ตัวอย่าง
พิจารณาตาราง ผลิตภัณฑ์ ที่มีความสัมพันธ์ต่อไปนี้ตามที่เห็นใน โปรแกรมดูตารางของพอร์ทัล Power Apps:
ชื่อที่แสดงความสัมพันธ์ | ตารางที่เกี่ยวข้อง | ชนิดความสัมพันธ์ |
---|---|---|
การสำรองผลิตภัณฑ์ | การจอง | แบบหนึ่งต่อกลุ่ม |
ผลิตภัณฑ์ ↔ ติดต่อเรา | ผู้ติดต่อ | กลุ่มต่อกลุ่ม |
ผลิตภัณฑ์ และ การจอง มีความเกี่ยวข้องกันผ่านความสัมพันธ์แบบหนึ่งต่อหลาย หากต้องการเชื่อมโยงเรกคอร์ดแรกของตาราง การจอง ที่มีเรกคอร์ดแรกของตาราง ผลิตภัณฑ์:
Relate( First( Products ).Reservations, First( Reservations ) )
หากต้องการลบความสัมพันธ์ระหว่างเรกคอร์ดเหล่านี้:
Unrelate( First( Products ).Reservations, First( Reservations ) )
เราไม่ได้สร้างหรือลบหรือเรกคอร์ดในเวลาเพียงความสัมพันธ์ระหว่างเรกคอร์ดได้รับการแก้ไข
ผลิตภัณฑ์ และ ผู้ติดต่อ มีความเกี่ยวข้องกันผ่านความสัมพันธ์แบบหลายต่อหลาย หากต้องการเชื่อมโยงเรกคอร์ดแรกของตาราง ผู้ติดต่อ ที่มีเรกคอร์ดแรกของตาราง ผลิตภัณฑ์:
Relate( First( Products ).Contacts, First( Contacts ) )
เนื่องจาก ความสัมพันธ์แบบกลุ่มต่อกลุ่มมีความสมมาตร เราอาจทำสิ่งนี้ในทิศทางตรงกันข้าม:
Relate( First( Contacts ).Products, First( Products ) )
หากต้องการลบความสัมพันธ์ระหว่างเรกคอร์ดเหล่านี้:
Unrelate( First( Products ).Contacts, First( Contacts ) )
or:
Unrelate( First( Contacts ).Products, First( Products ) )
การดำเนินการต่อไปนี้จะทำการดำเนินการเหล่านี้ในตารางเหล่านี้โดยใช้แอปด้วยตัวควบคุม แกลเลอรี และ กล่องคำสั่งผสม เพื่อการเลือกเรกคอร์ดที่เกี่ยวข้อง
ตัวอย่างเหล่านี้ขึ้นอยู่กับข้อมูลตัวอย่างที่ติดตั้งในสภาพแวดล้อมของคุณ ทั้ง สร้างสภาพแวดล้อมการทดลองรวมถึงข้อมูลตัวอย่าง หรือ เพิ่มข้อมูลตัวอย่างให้กับสภาพแวดล้อมที่มีอยู่.
แบบหนึ่งต่อกลุ่ม
ฟังก์ชั่น Relate
คุณจะสร้างแอปอย่างง่ายก่อน เพื่อดูและกำหนดการจองที่เกี่ยวข้องกับผลิตภัณฑ์อีกครั้ง
สร้าง แอปแท็บเล็ตจากว่างเปล่า
บนแท็บ มุมมอง เลือก แหล่งข้อมูล
ในบานหน้าต่าง ข้อมูล เลือก เพิ่มข้อมูล> เลือก ผลิตภัณฑ์
ตารางผลิตภัณฑ์เป็นส่วนหนึ่งของข้อมูลตัวอย่างที่โหลดด้านบนบนแท็บ แทรก เพิ่มตัวควบคุม แกลเลอรี ว่างเปล่าแนวตั้ง
ตรวจสอบให้แน่ใจว่ามีตัวควบคุม ชื่อ Gallery1 ที่คุณเพิ่งเพิ่มเข้าไป แล้วย้ายและปรับขนาดเพื่อเติมด้านซ้ายของหน้าจอ
บนแท็บ คุณสมบัติ ตั้งค่าคุณสมบัติ Items ของ Gallery1 เป็น ผลิตภัณฑ์ และ Layout เป็น รูปภาพและชื่อเรื่อง
ใน Gallery1 ตรวจสอบให้แน่ใจว่าตัวควบคุม ป้ายชื่อ ชื่อ TITLE1 แล้วตั้งค่าคุณสมบัติ Text เป็น ThisItem.Name
เลือกหน้าจอเพื่อหลีกเลี่ยงการแทรกรายการถัดไป ไปยัง Gallery1 เพิ่มตัวควบคุม แกลเลอรี แนวตั้งที่ว่างเปล่าที่สอง และตรวจสอบให้แน่ใจว่าชื่อ Gallery2
Gallery2 จะแสดงการจองสำหรับผลิตภัณฑ์ใดก็ตามที่ผู้ใช้เลือกใน Gallery1
ย้ายและปรับขนาด Gallery2 เพื่อเติมจตุภาคของมุมขวาบนของหน้าจอ
(ไม่บังคับ) เพิ่มตัวควบคุม ป้ายชื่อ สีน้ำเงิน ไว้เหนือ Gallery2 ดังที่แสดงในกราฟิกถัดไป
ในแถบสูตรตั้งค่าคุณสมบัติ Items ของ Gallery2 เป็น Gallery1.Selected.Reservations
ในบานหน้าต่างคุณสมบัติ ตั้งค่า เค้าโครง ของ Gallery2 เป็น ชื่อ
ใน Gallery2 เพิ่มตัวควบคุม กล่องคำสั่งผสม ตรวจสอบให้แน่ใจว่าชื่อ ComboBox1 แล้วย้ายและปรับขนาดเพื่อหลีกเลี่ยงการบล็อกตัวควบคุมอื่นๆ Gallery2
บนแท็บ คุณสมบัติ ตั้งค่าคุณสมบัติ Items ของ ComboBox1 เป็น ผลิตภัณฑ์
เลื่อนลงไปที่แท็บ คุณสมบัติ แและตั้งค่า คุณสมบัติ Allow multiple selection ของ ComboBox1 เป็น ปิด
ในแถบสูตร ให้ตั้งค่าคุณสมบัติ DefaultSelectedItems ของ ComboBox1 เป็น ThisItem.'Product Reservation'
ใน Gallery2 ตั้งค่า คุณสมบัติ OnSelect ของ NextArrow2 เป็นสูตรนี้:
Relate( ComboBox1.Selected.Reservations, ThisItem )
เมื่อผู้ใช้เลือกไอคอนนี้ การจองปัจจุบันจะเปลี่ยนเป็นผลิตภัณฑ์ที่ผู้ใช้เลือก ใน ComboBox1
กด F5 เพื่อทดสอบแอปในโหมดดูตัวอย่าง
ด้วยแอปนี้ ผู้ใช้สามารถย้ายการจองจากผลิตภัณฑ์หนึ่งไปยังอีกผลิตภัณฑ์หนึ่งได้ สำหรับการจองผลิตภัณฑ์เดียว ผู้ใช้สามารถเลือกผลิตภัณฑ์อื่นได้ ใน ComboBox1 จากนั้นเลือก NextArrow2 เพื่อเปลี่ยนการจอง
ฟังก์ชัน Unrelate
ณ จุดนี้ คุณสามารถย้ายความสัมพันธ์จากเรกคอร์ดหนึ่งไปยังอีกเรกคอร์ดหนึ่ง แต่คุณไม่สามารถลบความสัมพันธ์ทั้งหมดได้ คุณสามารถใช้ฟังก์ชัน Unrelate เพื่อตัดการเชื่อมต่อเรกคอร์ดการจองจากผลิตภัณฑ์ใดๆ
บนแท็บ มุมมอง เลือก แหล่งข้อมูล
ในบานหน้าต่าง ข้อมูล เลือก เพิ่มแหล่งข้อมูล>Microsoft Dataverse>การจอง>เชื่อมต่อ
ใน Gallery2 ตั้งค่า สูตร OnSelect สำหรับ NextArrow2 เป็นสูตรนี้:
If( IsBlank( ComboBox1.Selected ), Unrelate( Gallery1.Selected.Reservations, ThisItem ), Relate( ComboBox1.Selected.Reservations, ThisItem ) ); Refresh( Reservations )
คัดลอก Gallery2 ไปที่คลิปบอร์ด โดยการเลือก แล้วกด Ctrl-C
วางสำเนาของ Gallery2 ไปที่หน้าจอเดียวกัน โดยกด Ctrl-V จากนั้นย้ายไปยังจตุภาคที่ด้านล่างขวาของหน้าจอ
(ไม่บังคับ) หากคุณเพิ่มป้ายกำกับด้านบน Gallery2 ทำซ้ำสองขั้นตอนก่อนหน้าสำหรับป้ายกำกับนั้น
ให้แน่ใจว่าสำเนสของ Gallery2 มีชื่อ Gallery2_1 แล้วตั้งค่าคุณสมบัติ Items เป็นในสูตรนี้:
Filter( Reservations, IsBlank( 'Product Reservation' ) )
คำเตือนการมอบหมายปรากฏขึ้น แต่จะไม่สำคัญกับข้อมูลจำนวนเล็กน้อยในตัวอย่างนี้
ด้วยการเปลี่ยนแปลงเหล่านี้ ผู้ใช้สามารถล้างการเลือกใน ComboBox1 สำหรับผู้ติดต่อ หากบุคคลนั้นไม่ได้จองผลิตภัณฑ์ ผู้ติดต่อที่ไม่ได้จองผลิตภัณฑ์จะปรากฏขึ้นใน Gallery2_1 ที่ผู้ใช้สามารถกำหนดผู้ติดต่อแต่ละรายให้กับผลิตภัณฑ์
กลุ่มต่อกลุ่ม
สร้างความสัมพันธ์แบบกลกุ่มต่อกลุ่ม
ข้อมูลตัวอย่างไม่มีความสัมพันธ์แบบกลุ่มต่อกลุ่ม แต่คุณจะสร้างความสัมพันธ์ระหว่างตารางผลิตภัณฑ์และตารางผู้ติดต่อ ผู้ใช้สามารถเชื่อมโยงแต่ละผลิตภัณฑ์กับผู้ติดต่อมากกว่าหนึ่งรายและแต่ละผู้ติดต่อกับผลิตภัณฑ์มากกว่าหนึ่ง
จาก หน้านี้, เลือก ข้อมูล ในแถบนำทางด้านซ้าย จากนั้นเลือก ตาราง
เปลี่ยนตัวกรองตารางเพื่อรวมตารางทั้งหมด
ตามค่าเริ่มต้น ตารางตัวอย่างจะไม่ปรากฏขึ้น
เลื่อนลงมา เปิดตาราง ผลิตภัณฑ์ แล้วเลือก ความสัมพันธ์
เลือก เพิ่มความสัมพันธ์>แบบกลุ่มต่อกลุ่ม
เลือกตาราง ผู้ติดต่อ สำหรับความสัมพันธ์
เลือก เสร็จสิ้น>บันทึกตาราง
ผู้ติดต่อที่เกี่ยวข้องและไม่เกี่ยวข้องกับผลิตภัณฑ์อย่างน้อยหนึ่งรายการ
คุณจะสร้างแอปอื่นที่คล้ายกับแอปที่คุณสร้างไว้ก่อนหน้าในหัวข้อ แต่แอปใหม่จะให้ความสัมพันธ์แบบกลุ่มต่อกลุ่ม ผู้ติดต่อแต่ละคนจะสามารถจองผลิตภัณฑ์หลายรายการ แทนที่จะเป็นเพียงรายการเดียว
ในแอปเปล่า สำหรับแท็บเล็ต ให้สร้าง Gallery1 เช่นเดียวกับ ขั้นตอนแรก ในหัวข้อนี้อธิบาย
เพิ่มตัวควบคุมแนวตั้ง แกลเลอรี ที่ว่างเปล่าอีก ตรวจสอบให้แน่ใจว่าชื่อ Gallery2 จากนั้นย้ายไปไว้ที่มุมขวาบนของหน้าจอ
ในภายหลังในหัวข้อนี้ คุณจะต้องเพิ่มตัวควบคุม กล่องคำสั่งผสม ภายใต้ Gallery2
ในแถบสูตร ตั้งค่าคุณสมบัติ Items ของ Gallery2 เป็น Gallery1.Selected.Contacts
บนแท็บ คุณสมบัติ ตั้งค่า เค้าโครง เป็น รูปภาพและชื่อเรื่อง
ใน Gallery2 ตรวจสอบให้แน่ใจว่า ตัวควบคุม ป้ายชื่อ ชื่อ Title2 แล้วตั้งค่าคุณสมบัติ Text เป็น ThisItem.'Full Name'
จะไม่มีข้อความปรากฏขึ้นในส่วนควบคุมนั้นจนกว่าคุณจะทำตามขั้นตอนนี้จนเสร็จ และกำหนดผู้ติดต่อให้กับผลิตภัณฑ์
ลบ NextArrow2 แทรกไอคอน ยกเลิก และตรวจสอบให้แน่ใจว่าได้ตั้งชื่อ icon1 แล้ว
ตั้งค่าคุณสมบัติ OnSelect ของไอคอน Cancel เป็นสูตรดังนี้:
Unrelate( Gallery1.Selected.Contacts, ThisItem )
บนแท็บ มุมมอง เลือก แหล่งข้อมูล
ในบานหน้าต่าง ข้อมูล เลือก เพิ่มแหล่งข้อมูล>Microsoft Dataverse>ผู้ติดต่อ>เชื่อมต่อ
ภายใต้ Gallery2 เพิ่มตัวควบคุม กล่องคำสั่งผสม ตรวจสอบให้แน่ใจว่าชื่อ ComboBox1 แล้วตั้งค่าคุณสมบัติ Items เป็น ผู้ติดต่อ
บนแท็บ คุณสมบัติ ตั้งค่า อนุญาตให้เลือกหลายรายการ เป็น ปิด
แทรกไอคอน เพิ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:
Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
ด้วยแอปนี้ ผู้ใช้สามารถเชื่อมโยงและยกเลิกการเชื่อมโยงกลุ่มผู้ติดต่อกับแต่ละผลิตภัณฑ์ได้อย่างอิสระ
หากต้องการเพิ่มผู้ติดต่อในผลิตภัณฑ์ ให้เลือกผู้ติดต่อในกล่องคำสั่งผสมที่ด้านล่างของหน้าจอ แล้วเลือกไอคอน เพิ่ม
หากต้องการลบผู้ติดต่อออกจากผลิตภัณฑ์ให้เลือกไอคอน ยกเลิก สำหรับผู้ติดต่อนั้น
ความสัมพันธ์แบบกลุ่มต่อกลุ่มแตกต่างกันแบบหนึ่งต่อกลุ่ม ช่วยให้ผู้ใช้สามารถเชื่อมโยงผู้ติดต่อรายเดียวกันกับผลิตภัณฑ์หลายๆ ตัวได้
ในทางกลับกัน: เชื่อมโยงและไม่เชื่อมโยงผลิตภัณฑ์กับผู้ติดต่อหลายคน
ความสัมพันธ์แบบกลุ่มต่อกลุ่มมีความสมมาตร คุณสามารถขยายตัวอย่างเพื่อเพิ่มผลิตภัณฑ์ไปยังผู้ติดต่อ แล้วพลิกระหว่างสองหน้าจอเพื่อแสดงว่าความสัมพันธ์ปรากฏขึ้นจากทั้งสองทิศทางอย่างไร
ตั้งค่าคุณสมบัติ OnVisible ของ screen1 เป็น Refresh( Products )
เมื่อคุณอัปเดตความสัมพันธ์แบบหนึ่งต่อกลุ่มหรือแบบกลุ่มต่อกลุ่ม เฉพาะข้อมูลของตารางอาร์กิวเมนต์แรกของการเรียกใช้ Relate หรือ Unrelate จะรีเฟรช เอนทิตีที่สองต้องรีเฟรชด้วยตนเอง หากคุณต้องการพลิกระหว่างหน้าจอของแอปนี้
สำเนา Screen1
สำเนาจะถูกตั้งชื่อ Screen1_1 และฟอร์มจากพื้นฐานสำหรับการค้นหาความสัมพันธ์จากด้านผู้ติดต่อ
ในการสร้างมุมมองย้อนกลับ ให้เปลี่ยนสูตรเหล่านี้ในส่วนควบคุม Screen1_1:
- Screen1_1.OnVisible =
Refresh( Contacts )
- Gallery1_1.Items =
Contacts
- Title1_1.Text =
ThisItem.'Full Name'
- Label1_1.Text =
"Selected Contact Products"
- Gallery2_1.Items =
Gallery1_1.Selected.Products
- Title2_1.Text =
ThisItem.Name
- Icon1_1.OnSelect =
Unrelate( Gallery1_1.Selected.Products, ThisItem )
- ComboBox1_1.Items =
Products
- Icon2_1.OnSelect =
Relate( Gallery1_1.Selected.Products, ComboBox1_1.Selected )
ผลลัพธ์จะมีลักษณะคล้ายกับหน้าจอก่อนหน้า แต่มีความสัมพันธ์จากฝั่ง ผู้ติดต่อ
- Screen1_1.OnVisible =
แทรกไอคอน ลูกศรขึ้นลง และตั้งค่าคุณสมบัติ OnSelect เป็น Navigate( Screen1, None ) ทำสิ่งเดียวกันบน Screen1 ด้วยสูตร Navigate( Screen1_1, None )
ด้วยหน้าจอใหม่นี้ ผู้ใช้สามารถเพิ่มผู้ติดต่อไปยังผลิตภัณฑ์แล้วพลิกไปที่มุมมองของผู้ติดต่อและดูผลิตภัณฑ์ที่เกี่ยวข้อง ความสัมพันธ์มีความสมมาตรและแชร์ระหว่างสองหน้าจอ