แชร์ผ่าน


ทำความเข้าใจการอ้างอิงเรกคอร์ดและการค้นหา polymorphic ในแอปพื้นที่ทำงาน

เมื่อคุณเขียนรายงานการวิจัยในโรงเรียน คุณอาจระบุรายการอ้างอิงของคุณในตอนท้าย คุณไม่ได้เขียนสำเนาของข้อมูลจริงที่คุณใช้จริง แต่ใช้เป็นเว็บลิงก์ ชื่อหนังสือและผู้แต่งห รือข้อมูลอื่น ๆ เพื่อให้ใครบางคนสามารถติดตามแหล่งต้นฉบับได้ คุณผสมแหล่งข้อมูลประเภทต่าง ๆ ไว้ในรายการเดียว บทความทางหนังสือพิมพ์ถัดจากการบันทึกเสียง แต่ละแหล่งมีรายละเอียดเฉพาะของตนเองเพื่อการอ้างอิงที่เหมาะสม ตัวอย่างเช่นบทความ Wikipedia มักรวมถึง รายการการอ้างอิงที่ยาว

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

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

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

มีความแตกต่างในการใช้งานที่สำคัญอย่างหนึ่ง: คุณไม่สามารถเข้าถึงฟิลด์ของการอ้างอิงเรกคอร์ดได้โดยตรงโดยไม่ต้องสร้างตารางที่อ้างอิงถึงก่อน นี่เป็นเพราะแอปพื้นที่ทำงานต้องการทราบทุกประเภทเมื่อคุณเขียนสูตร เนื่องจากคุณไม่ทราบประเภทของการอ้างอิงเรคคอร์ดจนกว่าแอปจะทำงาน คุณจึงไม่สามารถใช้การอ้างอิงเครื่องหมาย ฟิลด์ ได้โดยตรง คุณต้องกำหนดชนิดตารางแบบไดนามิกด้วยฟังก์ชัน IsType ก่อนแล้วใช้สัญกรณ์ ฟิลด์ เกี่ยวกับผลลัพธ์ของฟังก์ชัน AsType

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

หมายเหตุ

คุณสามารถเลือกจากตัวเชื่อมต่อต่างๆ มากมายเพื่อเชื่อมต่อกับแหล่งข้อมูลชนิดต่างๆ สำหรับแอปพื้นที่ทำงาน อย่างไรก็ตามเมื่อทำงานกับแอปพื้นที่ทำงานภายใน Power Apps Studio คอลัมน์ ใน Microsoft Dataverse เรียกว่า ฟิลด์ คล้ายกับแหล่งข้อมูลอื่นๆ ทั้งหมด คอลัมน์ ใช้เมื่ออ้างถึงคอลัมน์ภายใน Dataverse เท่านั้น ข้อมูลเพิ่มเติม: การอัปเดตคำศัพท์ Dataverse

การค้นหาแบบ Polymorphic

Microsoft Dataverse รองรับความสัมพันธ์ระหว่างเรกคอร์ด แต่ละเรกคอร์ดในตาราง ลูกค้าองค์กร มีคอลัมน์การค้นหา ผู้ติดต่อหลัก เป็นเรกคอร์ดในตาราง ผู้ติดต่อ การค้นหาสามารถอ้างถึงเรกคอร์ดใน ผู้ติดต่อ เท่านั้นและไม่สามารถอ้างถึงเรกคอร์ดในตาราง Teams รายละเอียดสุดท้ายนั้นสำคัญเพราะคุณทราบเสมอว่าคอลัมน์ใดบ้างที่จะพร้อมใช้งานสำหรับการค้นหา

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

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

ในส่วนถัดไป คุณจะเริ่มสำรวจแนวคิดเหล่านี้โดยทำงานกับการค้นหา เจ้าของ

แสดงคอลัมน์ของเจ้าของเรกคอร์ด

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

หากต้องการแสดงคอลัมน์นั้นในตาราง ลูกค้าองค์กร:

  1. ลงชื่อเข้าใช้ Power Apps

  2. ในแถบบานหน้าต่างด้านซ้าย เลือก ข้อมูล > ตาราง

  3. ในรายการตาราง ให้เลือก ลูกค้าองค์กร

  4. ที่มุมบนขวา เปิดรายการตัวกรอง (ซึ่งถูกตั้งค่าเป็น ค่าเริ่มต้น ตามค่าเริ่มต้น) แล้วเลือก ทั้งหมด

  5. เลื่อนลงมาจนคอลัมน์ เจ้าของ ปรากฏขึ้น

    คอลัมน์เจ้าของในตารางลูกค้าองค์กร

คอลัมน์การค้นหานี้สามารถอ้างถึงเรกคอร์ดจากตาราง ทีม หรือตาราง ผู้ใช้ ไม่ใช่ทุกเรกคอร์ดในตารางเหล่านี้ที่ได้รับอนุญาตให้เป็น เจ้าของ; ตรวจสอบบทบาทที่ได้รับการสนับสนุนหากคุณประสบปัญหา

กราฟิกนี้แสดงแกลเลอรีที่เรียบง่ายของ ลูกค้าองค์กร ที่ตาราง ลูกค้าองค์กร เพิ่มในแอปเป็นแหล่งข้อมูล:

บัญชีที่แสดงในการควบคุมแกลเลอรี่

ข้อสำคัญ

ตลอดหัวข้อนี้ กราฟิกแสดงชื่อและค่าอื่น ๆ ที่ไม่ได้เป็นส่วนหนึ่งของข้อมูลตัวอย่างที่มาพร้อมกับ Dataverse ขั้นตอนเหล่านี้ แสดงวิธีกำหนดค่าการควบคุมสำหรับผลลัพธ์เฉพาะ แต่ประสบการณ์ของคุณจะแตกต่างกันไปตามข้อมูลสำหรับองค์กรของคุณ

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

คุณต้องมีสูตรที่สามารถปรับให้เข้ากับความแปรปรวนนี้ได้ คุณต้องเพิ่มแหล่งข้อมูลสำหรับชนิดตารางที่ เจ้าของ อาจเป็นได้ (ในกรณีนี้ ผู้ใช้ และ ทีม) เพิ่มแหล่งข้อมูลทั้งสามนี้ในแอปของคุณ:

ตารางลูกค้าองค์กร ทีม และผู้ใช้ในบานหน้าต่างข้อมูล

ด้วยแหล่งข้อมูลเหล่านี้ ให้ใช้สูตรนี้เพื่อแสดงชื่อของผู้ใช้หรือทีม:

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

บัญชีแสดงในตัวควบคุมแกลเลอรี่ที่มีฟิลด์เจ้าของแสดงขึ้นมา

ในสูตรนี้ ฟังก์ชัน IsType ทดสอบฟังก์ชันฟิลด์ เจ้าของ กับตาราง ทีม ถ้าเป็นตารางชนิดนั้น ฟังก์ชัน AsType ส่งไปที่เรกคอร์ด ทีม ณ จุดนี้ คุณสามารถเข้าถึงฟิลด์ทั้งหมดของตาราง ทีม รวมทั้ง ชื่อทีม โดยใช้สัญกรณ์ .ฟิลด์ ถ้า IsType กำหนดว่า เจ้าของ ไม่ใช่เรกคอร์ดในตาราง ทีม ฟิลด์นั้นต้องเป็นเรกคอร์ดในตาราง ผู้ใช้ เพราะฟิลด์ เจ้าของ จำเป็นต้องกรอกข้อมูล (ไม่สามารถ ว่างเปล่า)

ในการใช้ฟิลด์ใด ๆ ของการอ้างอิงเรกคอร์ด คุณต้องใช้ฟังก์ชัน AsType ก่อนเพื่อส่งไปยังชนิดตารางเฉพาะ คุณไม่สามารถเข้าถึงฟิลด์ได้โดยตรงจากฟิลด์ เจ้าของ เนื่องจากระบบไม่ทราบว่าคุณต้องการใช้ตารางชนิดใด

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

ปุ่มเพื่อเปิดตัวจัดการการแก้ไขระดับสูตร

จากนั้นแทนที่สูตรก่อนหน้าด้วยสูตรนี้:

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

ตัวกรองขึ้นอยู่กับเจ้าของ

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

เพิ่มตัวควบคุม กล่องคอมโบ เหนือแกลเลอรีและตั้งค่าคุณสมบัติเหล่านี้ของตัวควบคุมใหม่:

  • รายการ: Users
  • การเลือกหลายรายการ: false

เพิ่มตัวควบคุมกล่องคำสั่งผสมเหนือแกลเลอรี พร้อมตั้งค่าคุณสมบัติรายการเป็นผู้ใช้

ในการกรองแกลเลอรี่โดยผู้ใช้ที่เลือกจากกล่องคอมโบนี้ ให้ตั้งค่าแกลเลอรี รายการ เป็น

Filter( Accounts, Owner = ComboBox1.Selected )

แกลเลอรีที่กรองแล้วตามค่าที่ตั้งไว้ในตัวควบคุมกล่องคำสั่งผสม

ข้อสำคัญ

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

คุณไม่จำเป็นต้องใช้ isType หรือ AsType เพราะคุณกำลังเปรียบเทียบการอ้างอิงเรกคอร์ดกับการอ้างอิงเรกคอร์ดอื่น ๆ หรือเรกคอร์ดแบบเต็ม แอปรู้ชนิดตารางของ ComboBox1.เลือกแล้ว เพราะมาจากตาราง ผู้ใช้ บัญชีที่เจ้าของเป็นทีมจะไม่ตรงกับเกณฑ์ตัวกรอง

คุณสามารถเพิ่มความแพรวพราวเล็กน้อยโดยการสนับสนุนการกรองโดยผู้ใช้หรือทีม

  1. ทำที่ว่างใกล้กับด้านบนของหน้าจอโดยปรับขนาดแกลเลอรี่และย้ายคอมโบบ็อกซ์ ใส่ ตัวควบคุม ปุ่มตัวเลือก เหนือแกลเลอรีจากนั้นตั้งค่าคุณสมบัติเหล่านี้สำหรับการควบคุมใหม่:

    • รายการ: [ "All", "Users", "Teams" ]
    • เค้าโครง: Layout.Horizontal
  2. สำหรับตัวควบคุม กล่องคำสั่งผสม ตั้งคุณสมบัตินี้ (หากกล่องคำสั่งผสมหายไป ให้เลือก ผู้ใช้ ในตัวควบคุมปุ่มตัวเลือก):

    • มองเห็นได้: Radio1.Selected.Value = "Users"
  3. คัดลอกและวางตัวควบคุม กล่องคำสั่งผสม ย้ายสำเนาไปที่ต้นฉบับ จากนั้นตั้งค่าคุณสมบัติเหล่านี้สำหรับสำเนา:

    • รายการ: Teams
    • มองเห็นได้: Radio1.Selected.Value = "Teams"

    แอปจะแสดงกล่องคำสั่งผสมเพียงหนึ่งกล่องต่อครั้ง ขึ้นอยู่กับสถานะของปุ่มตัวเลือก เนื่องจากพวกนี้อยู่เหนือซึ่งกันและกัน จะดูเหมือนเป็นตัวควบคุมเดียวกันที่เปลี่ยนแปลงเนื้อหา

  4. สุดท้ายนี้ ตั้งค่าคุณสมบัติ รายการ ของตัวควบคุม แกลเลอรี ให้กับสูตรนี้:

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

    แกลเลอรี่ที่กรองแสดงเรกคอร์ดทั้งหมดหรือผู้ใช้หรือทีมที่เฉพาะเจาะจง

ด้วยการเปลี่ยนแปลงเหล่านี้ คุณสามารถแสดงเรกคอร์ดทั้งหมดหรือกรองตามผู้ใช้หรือทีม:

แอนิเมชันแสดงผลลัพธ์ที่กรองต่าง ๆ ตามตัวควบคุมปุ่มตัวเลือกและกล่องคำสั่งผสม

สูตรสามารถมอบสิทธิ์ได้อย่างสมบูรณ์ ส่วนที่เปรียบเทียบค่าปุ่มตัวเลือกจะเป็นค่าคงที่ในทุกเรกคอร์ด และได้รับการประเมินก่อนที่จะส่งตัวกรองที่เหลือไปที่ Dataverse

หากคุณต้องการกรองตามประเภทของเจ้าของคุณสามารถใช้ฟังก์ชั่น isType แต่ยังไม่สามารถมอบหมายได้

กรองตามประเภทเจ้าของโดยใช้ IsType

ปรับปรุงเจ้าของโดยใช้ Patch

คุณสามารถปรับปรุง เจ้าของ ในลักษณะเดียวกับการค้นหาอื่น ๆ วิธีตั้งค่าเจ้าของบัญชีที่เลือกในปัจจุบันเป็นทีมแรก:

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

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

ในการเพิ่มความสามารถนี้ให้กับแอป:

  1. ในบานหน้าต่าง มุมมองต้นไม้ ให้เลือกตัวควบคุม ตัวเลือก และตัวควบคุม กล่องคำสั่งผสม ทั้งสองในเวลาเดียวกัน

  2. บนเมนูจุดไข่ปลาให้เลือก คัดลอกรายการเหล่านี้

    คัดลอกตัวควบคุมหลายตัวโดยใช้มุมมองแบบต้นไม้

  3. บนเมนูเดียวกัน ให้เลือก วาง

    วางตัวควบคุมหลายตัวโดยใช้มุมมองแบบต้นไม้

  4. ย้ายตัวควบคุมที่คัดลอกไปทางด้านขวาของแกลเลอรี

    ย้ายตัวควบคุมที่คัดลอกไปทางด้านขวาของแกลเลอรี

  5. เลือกคัดลอกตัวควบคุม ตัวเลือก แล้วเปลี่ยนคุณสมบัติเหล่านี้:

    • รายการ: [ "Users", "Teams" ]
    • ค่าเริ่มต้น: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    ลบตัวเลือกทั้งหมดออกจากตัวควบคุมตัวเลือก

  6. ในตัวควบคุม ตัวเลือก เลือก ผู้ใช้ เพื่อให้ตัวควบคุม กล่องคำสั่งผสม ที่แสดงรายการผู้ใช้ปรากฏให้เห็น

  7. เลือกตัวควบคุม กล่องคำสั่งผสม ที่มองเห็นได้จากนั้นตั้งค่าคุณสมบัติ DefaultSelectedItems กับสูตรนี้:

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    คุณสมบัติเริ่มต้นที่ตั้งค่าสำหรับกล่องคำสั่งผสมของผู้ใช้

  8. ในตัวควบคุม ตัวเลือก เลือก ทีม เพื่อให้ตัวควบคุม กล่องคำสั่งผสม ที่แสดงรายการทีมปรากฏให้เห็น

  9. เลือกตัวควบคุม ตัวเลือก ในการเลือกออกจากตัวควบคุม กล่องคำสั่งผสม ของผู้ใช้ที่มองไม่เห็นในขณะนี้

  10. เลือกตัวควบคุม กล่องคำสั่งผสม สำหรับทีมที่มองเห็นได้ จากนั้นตั้งค่าคุณสมบัติ DefaultSelectedItems กับสูตรนี้:

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    คุณสมบัติเริ่มต้นที่ตั้งค่าสำหรับกล่องคำสั่งผสมของทีม

  11. แทรกตัวควบคุม ปุ่ม ย้ายไปภายใต้ตัวควบคุม กล่องคำสั่งผสม จากนั้นตั้งค่าคุณสมบัติ ข้อความ ของปุ่มเพื่อ "Patch Owner"

  12. ตั้งค่าคุณสมบัติ OnSelect ของปุ่มเป็นสูตรดังนี้:

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    สูตรตั้งอยู่บนปุ่มควบคุม

การคัดลอก ตัวเลือก และ กล่องคำสั่งผสม แสดงเจ้าของสำหรับบัญชีที่เลือกในปัจจุบันในแกลเลอรี่ ด้วยการควบคุมเดียวกัน คุณสามารถตั้งค่าเจ้าของบัญชีให้กับทีมหรือผู้ใช้โดยเลือกปุ่ม:

แอนิเมชันแสดงแพตช์ของเจ้าของที่มีผู้ใช้หรือทีม

แสดงเจ้าของโดยใช้ฟอร์ม

คุณสามารถแสดงฟิลด์ เจ้าของ ภายในฟอร์มโดยเพิ่มการ์ดที่กำหนดเอง จากการเขียนนี้ คุณไม่สามารถเปลี่ยนค่าของฟิลด์ด้วยตัวควบคุมฟอร์ม

  1. แทรกตัวควบคุม แก้ไขแบบฟอร์ม จากนั้นปรับขนาดและย้ายไปที่มุมล่างขวา

  2. บนแท็บ คุณสมบัติ ใกล้กับด้านขวาของหน้าจอเปิดแท็บรายการ แหล่งข้อมูล แล้วเลือก บัญชี

    การควบคุมแบบฟอร์มแสดงฟิลด์เพิ่มเติมที่มีค่าว่าง

  3. ตั้งค่าคุณสมบัติ รายการ ของฟอร์มเป็น Gallery1.Selected

    การควบคุมฟอร์มแสดงฟิลด์เพิ่มเติมที่มาจากรายการที่เลือกในแกลเลอรี่

  4. บนแท็บ คุณสมบัติ ที่บานหน้าต่างด้านขวามือ เลือก แก้ไขฟิลด์

  5. ในบางหน้าต่าง ฟิลด์ ให้เลือกจุดไข่ปลาแล้วเลือก เพิ่มบัตรที่กำหนดเอง

    คำสั่งสำหรับการเพิ่มการ์ดที่กำหนดเอง

    การ์ดใหม่จะปรากฏขึ้นที่ด้านล่างของตัวควบคุมฟอร์ม

  6. ปรับขนาดการ์ดตามต้องการเพื่อแสดข้อความทั้งหมด

    ใส่การ์ดที่กำหนดเอง ว่างเปล่า

  7. แทรกตัวควบคุม ป้ายชื่อ ลงในการ์ดแบบกำหนดเอง จากนั้นตั้งคุณสมบัติ ข้อความ ของป้ายชื่อสำหรับสูตรที่คุณใช้ในแกลเลอรี:

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    การ์ดแบบกำหนดเองที่แสดงฟิลด์เจ้าของในตัวควบคุมป้ายกำกับ

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

แอนิเมชันที่แสดงตัวควบคุมฟอร์มตอบสนองต่อการเปลี่ยนแปลงในแกลเลอรี

แสดงคอลัมน์ของลูกค้า

ใน Dataverse คอลัมน์ค้นหา ลูกค้า เป็นการค้นหา polymorphic อีกรูปแบบหนึ่งที่คล้ายกับ เจ้าของ มาก

จำกัดหนึ่ง เจ้าของ ต่อหนึ่งตาราง แต่ตารางสามารถมีคอลัมน์ค้นหา ลูกค้า ศูนย์ หนึ่งรายการ หรือมากกว่าได้ ตารางระบบ ผู้ติดต่อ ประกอบด้วยคอลัมน์ ชื่อบริษัท ซึ่งก็คือคอลัมน์ค้นหา ลูกค้า

ตารางผู้ติดต่อที่แสดงคอลัมน์ชื่อบริษัทเป็นชนิดข้อมูลลูกค้าที่ไม่จำเป็น

คุณสามารถเพิ่มคอลัมน์ค้นหา ลูกค้า ไปยังตารางโดยเลือกชนิดข้อมูล ลูกค้า สำหรับคอลัมน์ใหม่

ชนิดข้อมูลลูกค้าจากรายการชนิดข้อมูลเมื่อสร้างคอลัมน์

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

ตารางลูกค้าองค์กร ทีม ผู้ใช้ และผู้ติดต่อในบานหน้าต่างข้อมูล

การใช้งานฟิลด์ ลูกค้า และ เจ้าของ คล้ายกันมากจนคุณสามารถคัดลอกแอป (ไฟล์ > บันทึกเป็น และจากนั้นระบุชื่ออื่น) และทำการแทนที่ง่าย ๆ เหล่านี้:

Location เจ้าของ ตัวอย่าง ลูกค้า ตัวอย่าง
ตลอด เจ้าของ 'ชื่อลูกค้า'
ตลอด ผู้ใช้ ลูกค้าองค์กร
ตลอด กลุ่มคน ผู้ติดต่อ
คุณสมบัติของ รายการ แกลเลอรี ลูกค้าองค์กร ผู้ติดต่อ
คุณสมบัติของ รายการ ฟอร์ม ลูกค้าองค์กร ผู้ติดต่อ
อาร์กิวเมนต์แรกของ Patch
ในคุณสมบัติ OnSelect ของปุ่ม
ลูกค้าองค์กร ผู้ติดต่อ
กรองคุณสมบัติ รายการ ของตัวเลือก [ "ทั้งหมด", "ผู้ใช้", "ทีม" ] [ "ทั้งหมด", "บัญชี", "ผู้ติดต่อ" ]
Patch คุณสมบัติ รายการ ของตัวเลือก [ "ผู้ใช้", "ทีม" ] [ "บัญชี", "ผู้ติดต่อ" ]
คุณสมบัติ มองเห็นได้ ของกล่องคำสั่งผสม "ผู้ใช้" และ "ทีม" "บัญชี" และ "ผู้ติดต่อ"

ตัวอย่างเช่น แกลเลอรีใหม่ควรมีคุณสมบัตินี้ รายการ:

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

แอปลูกค้าที่มาจากแอปเจ้าของที่มีการเปลี่ยนแปลงง่าย ๆ

สองความแตกต่างที่สำคัญระหว่าง ลูกค้า และ เจ้าของ คือต้องการการปรับปรุงสูตรภายในแกลเลอรีและฟอร์ม:

  1. ความสัมพันธ์แบบหนึ่งต่อกลุ่มระหว่าง ลูกค้าองค์กร และ ผู้ติดต่อ ใช้ลำดับความสำคัญเมื่อคุณอ้างถึงชนิดตารางเหล่านี้ตามชื่อ แทนที่จะใช้ บัญชี ใช้ [@บัญชี]; แทนที่จะใช้ ผู้ติดต่อ ใช้ [@ผู้ติดต่อ] แทน โดยใช้ ตัวดำเนินการแก้ความกำกวมส่วนกลาง คุณแน่ใจว่าคุณกำลังอ้างถึงชนิดตารางใน IsType และ AsType ปัญหานี้มีอยู่เฉพาะในบริบทเรกคอร์ดของแกลเลอรีและตัวควบคุมฟอร์ม

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

การเปลี่ยนแปลงทั้งสองนี้อยู่ในสูตรเดียวกัน ซึ่งปรากฏในการ์ดที่กำหนดเองในแบบฟอร์มเช่นเดียวกับในคุณสมบัติ ข้อความ ของตัวควบคุมป้ายชื่อของแกลเลอรี่:

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'
)

ปรับปรุงไปยังคุณสมบัติข้อความของตัวควบคุมคำบรรยายในแกเลอรี่

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

ภาพเคลื่อนไหวที่แสดงว่าทำไมการเลือกผู้ติดต่อเปลี่ยนแปลงตัวควบคุมอื่นและแบบฟอร์ม

ทำความเข้าใจเกี่ยวกับคอลัมน์ค้นหา

คอลัมน์การค้นหา ความเกี่ยวข้อง จะแตกต่างจากที่คุณเคยทำงานมาแล้วในหัวข้อนี้เล็กน้อย คุณจะเริ่มต้นด้วยการใช้รูปแบบที่หัวข้อนี้อธิบายไว้ก่อนหน้านี้แล้วคุณจะได้เรียนรู้เทคนิคอื่น ๆ

คุณสามารถเริ่มต้นง่าย ๆ ด้วยตาราง แฟกซ์ ตารางนี้มีคอลัมน์ค้นหา ความเกี่ยวข้อง แบบ polymorphic ซึ่งสามารถอ้างถึง ลูกค้าองค์กร ผู้ติดต่อ และตารางอื่นๆ คุณสามารถใช้แอปสำหรับ ลูกค้า และแก้ไขเป็น โทรสาร

Location ลูกค้า ตัวอย่าง โทรสาร ตัวอย่าง
ตลอด 'ชื่อลูกค้า' เกี่ยวกับ
คุณสมบัติของ รายการ แกลเลอรี ผู้ติดต่อ โทรสาร
คุณสมบัติของ รายการ ฟอร์ม ผู้ติดต่อ โทรสาร
อาร์กิวเมนต์แรกของ Patch
ในคุณสมบัติ OnSelect ของปุ่ม
ผู้ติดต่อ โทรสาร

คุณจะต้องเพิ่มแหล่งข้อมูล อีกครั้ง: ครั้งนี้เพื่อ โทรสาร บนแท็บ มุมมอง เลือก แหล่งข้อมูล:

บานหน้าต่างข้อมูลแสดงตารางลูกค้าองค์กร ทีม ผู้ใช้ ผู้ติดต่อ และแฟกซ์

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

If( IsBlank( ThisItem.Regarding ), "",
    IsType( ThisItem.Regarding, Accounts ),
        "Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
    IsType( ThisItem.Regarding, Contacts ),
        "Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
    ""
)

ปรับปรุงคุณสมบัติข้อความสำหรับตัวควบคุมคำบรรยายสำหรับการค้นหาที่เกี่ยวข้อง

หลังจากที่คุณทำการเปลี่ยนแปลงเหล่านี้ คุณจะทำงานกับการค้นหา ที่เกี่ยวข้อง เช่นเดียวกับที่คุณทำการค้นหา เจ้าของ และ ลูกค้า

ภาพเคลื่อนไหวที่แสดงว่าทำไมการเลือกรายการในแกเลอรี่เปลี่ยนแปลงตัวควบคุมอื่นและฟอร์ม

ทำความเข้าใจความสัมพันธ์ที่เกี่ยวข้อง

ที่เกี่ยวข้อง แตกต่างจาก เจ้าของ และ ลูกค้า เพราะอันแรกเกี่ยวข้องกับความสัมพันธ์แบบกลุ่มต่อหนึ่ง ตามนิยามแล้วความสัมพันธ์แบบหนึ่งต่อกลุ่มแบบย้อนกลับ ช่วยให้คุณสามารถเขียน (บัญชี) แรก.Faxes ได้

กลับมาดูคำจำกัดความของตารางกัน ใน Dataverse ตาราง เช่น แฟกซ์ งาน อีเมล บันทึกย่อ การติดต่อทางโทรศัพท์ท์ จดหมาย และ แชท ถูกกำหนดให้เป็น กิจกรรม นอกจากนี้ คุณยังสามารถสร้าง ตารางกิจกรรมแบบกําหนดเอง ของคุณเองได้ เมื่อคุณดูหรือสร้างตารางกิจกรรม การตั้งค่าของตารางจะปรากฏภายใต้ การตั้งค่าเพิ่มเติม

การตั้งค่าตารางกิจกรรมเมื่อสร้างตาราง

ตารางอื่นๆ อาจเกี่ยวข้องกับตารางกิจกรรมหากเปิดใช้งานเป็น งานกิจกรรม ในการตั้งค่าของตาราง ลูกค้าองค์กร ผู้ติดต่อ และตารางมาตรฐานอื่น ๆ อีกมากมายถูกกำหนดไว้ (อีกครั้งภายใต้ การตั้งค่าเพิ่มเติม)

การตั้งค่างานกิจกรรมเมื่อสร้างตาราง

ตารางกิจกรรมและตารางงานกิจกรรมทั้งหมดมีความสัมพันธ์โดยนัย หากคุณเปลี่ยนตัวกรองเป็น ทั้งหมด ที่ด้านบนของหน้าจอ ให้เลือกตาราง แฟกซ์ แล้วเลือกแท็บ ความสัมพันธ์ ตารางทั้งหมดที่สามารถเป็นเป้าหมายของการค้นหา ความเกี่ยวข้อง ปรากฏขึ้น

ความสัมพันธ์ของตารางแฟกซ์แสดงเกี่ยวกับความสัมพันธ์แบบกลุ่มต่อหนึ่ง

หากคุณแสดงความสัมพันธ์สำหรับตาราง ลูกค้าองค์กร ตารางทั้งหมดที่สามารถเป็นแหล่งของฟิลด์ค้นหา ความเกี่ยวข้อง ปรากฏขึ้น

ความสัมพันธ์ของตารางลูกค้าองค์กรแสดงเกี่ยวกับความสัมพันธ์แบบหนึ่งต่อกลุ่ม

ทุกอย่างนี่หมายถึงอะไร?

  • เมื่อคุณเขียนสูตร คุณต้องพิจารณาว่ารายการของตารางกิจกรรมไม่ได้รับการแก้ไข และคุณสามารถสร้างสูตรของคุณเองได้ สูตรต้องจัดการตารางกิจกรรมที่คุณไม่คาดคิดได้อย่างเหมาะสม
  • งานกิจกรรมและกิจกรรมมีความสัมพันธ์แบบหนึ่งต่อกลุ่ม คุณสามารถขอโทรสารทั้งหมดที่เกี่ยวข้องกับบัญชีได้อย่างง่ายดาย

ในการสำรวจแนวคิดนี้ในแอป:

  1. เพิ่มหน้าจออื่น

    แทรกหน้าจอว่างเปล่า

  2. แทรกตัวควบคุมแกลเลอรี ปรับขนาด แล้วเลื่อนไปทางซ้ายของหน้าจอ

  3. บนแท็บ คุณสมบัติ ใกล้กับด้านขวาของหน้าจอ ตั้งค่าคุณสมบัติ รายการ ของแกลเลอรี เป็น บัญชี

    ตั้งค่ารายการเป็นบัญชีในบานหน้าต่างคุณสมบัติ

  4. ตั้งค่าเค้าโครงของแกลเลอรี่เป็น หัวข้อ แล้วตั้งค่าฟิลด์หัวข้อเป็น ชื่อบัญชี

    ตั้งค่าเค้าโครงเป็นชื่อสำหรับตัวควบคุมแกลเลอรี่ในบานหน้าต่างคุณสมบัติ

  5. เพิ่มคุมแกลเลอรีที่สอง ปรับขนาด แล้วเลื่อนไปทางขวาของหน้าจอ

  6. ตั้งค่าคุณสมบัติ รายการ ของแกลเลอรีใหม่เป็น Gallery2.Selected.Faxes

    ขั้นตอนนี้จะคืนค่ารายการโทรสารที่ผ่านการกรองสำหรับบัญชีที่ระบุ

    ตั้งค่าคุณสมบัติรายการของแกลเลอรีที่แสดงโทรสาร

  7. ตั้งค่าเค้าโครงของแกลเลอรี่เป็น ชื่อและคำบรรยายจากนั้นตั้งค่าฟิลด์ชื่อ ให้แสดงฟิลด์ Subject (ซึ่งอาจเป็นตัวพิมพ์เล็ก subject)

    ตั้งชื่อเรื่องในฟิลด์หัวเรื่อง

เมื่อคุณเลือกรายการในรายการบัญชี รายการโทรสารจะแสดงโทรสารสำหรับบัญชีนั้นเท่านั้น

ภาพเคลื่อนไหวที่แสดงการเลือกในแกลเลอรีบัญชีที่ส่งเสริมรายการโทรสาร

ตารางกิจกรรม

ตามที่อธิบายไว้ในส่วนก่อนหน้า คุณสามารถแสดงโทรสารทั้งหมดสำหรับบัญชี อย่างไรก็ตาม คุณยังสามารถแสดงกิจกรรมทั้งหมดสำหรับบัญชี รวมถึงโทรสาร ข้อความอีเมล โทรศัพท์ และการโต้ตอบอื่น ๆ

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

รายการตารางแสดงตารางกิจกรรม

ตาราง กิจกรรม พิเศษ เมื่อใดก็ตามที่คุณเพิ่มเรกคอร์ดลงในตาราง แฟกซ์ ระบบยังสร้างเรกคอร์ดในตาราง กิจกรรม ที่มีคอลัมน์ทั่วไปในตารางกิจกรรมทั้งหมด ของคอลัมน์เหล่านั้น เรื่อง เป็นหนึ่งในสิ่งที่น่าสนใจที่สุด

คุณสามารถแสดงกิจกรรมทั้งหมดได้โดยเปลี่ยนเพียงบรรทัดเดียวในตัวอย่างก่อนหน้า แทนที่ Gallery2.Selected.Faxes ด้วย Gallery2.Selected.Activities

เปลี่ยนคุณสมบัติของรายการสำหรับแกลเลอรีที่สองเปลี่ยนจากโทรสารเป็นกิจกรรม

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

บานหน้าต่างข้อมูลแสดงตารางทั้งหมดที่จำเป็นสำหรับฟังก์ชัน IsType

ในการใช้สูตรนี้ คุณสามารถแสดงชนิดของเรกคอร์ด ในตัวควบคุมป้ายกำกับภายในแกลเลอรี:

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

ตั้งค่าคุณสมบัติข้อความเป็นสูตรเพื่อแสดงข้อมูลสำหรับโทรสาร โทรศัพท์และกิจกรรมอื่น ๆ

คุณยังสามารถใช้ AsType เพื่อเข้าถึงฟิลด์ประเภทเฉพาะ ตัวอย่างเช่น สูตรนี้กำหนดชนิดของแต่ละกิจกรรม และสำหรับการติดต่อทางโทรศัพท์ จะแสดงหมายเลขโทรศัพท์และทิศทางการโทรจากตาราง หมายเลขโทรศัพท์:

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

ขยายคุณสมบัติข้อความด้วยข้อมูลเพิ่มเติมสำหรับการติดต่อทางโทรศัพท์

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

หน้าจอเสร็จสมบูรณ์แสดงข้อมูลสำหรับกิจกรรมประเภทต่างๆ

ตารางบันทึกย่อ

จนถึงปัจจุบัน ตัวอย่าง ความเกี่ยวข้อง ทั้งหมดขึ้นอยู่กับกิจกรรม แต่ตาราง บันทึกย่อ แสดงถึงกรณีอื่น

เมื่อคุณสร้างตาราง คุณสามารถเปิดใช้งานสิ่งที่แนบมาได้

เปิดใช้งานสิ่งที่แนบมาและบันทึกย่อเมื่อสร้างตาราง

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

ตารางลูกค้าองค์กรแสดงความสัมพันธ์กับบันทึกย่อผ่านความสัมพันธ์แบบหนึ่งต่อกลุ่ม

นอกเหนือจากความแตกต่างนี้คุณใช้การค้นหา ที่เกี่ยวข้อง ในลักษณะเดียวกับที่คุณใช้กิจกรรม ตารางที่เปิดใช้งานสำหรับสิ่งที่แนบมามีความสัมพันธ์แบบหนึ่งต่อกลุ่มกับ บันทึกย่อ ดังในตัวอย่างนี้:

First( Accounts ).Notes

หมายเหตุ

ในขณะการเขียนนี้ การค้นหา ความเกี่ยวข้อง ยังไม่พร้อมใช้งานสำหรับตาราง บันทึกย่อ คุณไม่สามารถอ่านหรือกรองตามคอลัมน์ ความเกี่ยวข้อง และคุณไม่สามารถตั้งค่าคอลัมน์โดยใช้ Patch

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

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

ผู้ร่วมกิจกรรม

ในขณะที่เขียนนี้แอปพื้นที่ทำงานไม่สนับสนุนผู้ร่วมกิจกรรม

หมายเหตุ

บอกให้เราทราบเกี่ยวกับภาษาที่คุณต้องการในคู่มือ ทำแบบสำรวจสั้นๆ (โปรดทราบว่าแบบสำรวจนี้เป็นภาษาอังกฤษ)

แบบสำรวจนี้ใช้เวลาทำประมาณเจ็ดนาที ไม่มีการเก็บข้อมูลส่วนบุคคล (คำชี้แจงสิทธิ์ส่วนบุคคล)