الدالتان Relate وUnrelate

ينطبق على: تطبيقات اللوحة التطبيقات المستندة إلى النموذج

ربط سجلات جدولين وعدم تسجيلها من خلال علاقة واحد إلى كثير أو كثير إلى كثير.

الوصف

تقوم وظيفة Relate بربط سجلين من خلال علاقة واحد إلى كثير أو علاقة كثير إلى كثير في Microsoft Dataverse. تقوم وظيفة Unrelate بإلغاء العملية وإزالة الربط.

بالنسبة لسجل واحد إلى العلاقات، فإن الجدول "كثير" له حقل مفتاح أجنبي يشير إلى سجل "جدول واحد". Relate تقوم بتعيين هذا الحقل للإشارة إلى سجل محدد من الجدول واحد، بينما تقوم Unrelate بتعيين هذا الحقل إلى فارغ. إذا تم تعيين الحقل بالفعل عند استدعاء وظيفة Relate، سيتم فقد الارتباط الموجود بتفضيل الارتباط الجديد. يمكنك أيضًا تعيين هذا الحقل باستخدام وظيفة Patch أو عنصر تحكم Edit form؛ إنك لست في حاجة إلى استخدام وظيفة Relate.

بالنسبة لعلاقات كثير إلى كثير، يحتفظ النظام الذي يربط السجلات بجدول ربط مخفي. لا يمكنك الوصول إلى جدول الانضمام هذا مباشرة ؛ يمكن قراءته فقط من خلال إسقاط واحد إلى كثير والتعيين من خلال وظيفتي Relate وUnrelate. الجدول المرتبط بالمرهم له مفتاح أجنبي.

سيتم تحديث بيانات الجدول التي تحددها في وسيطة الأولى لتعكس التغيير، ولكن لن يتم تحديث بيانات الجدول التي تحددها في وسيطة ثانية. يجب تحديث هذه البيانات يدويًا باستخدام وظيفة Refresh لإظهار نتيجة العملية.

لا تقوم هذه الوظائف بإنشاء أو حذف سجل. يمكنها فقط ربط سجلين موجودين بالفعل أو إلغاء ربطهما.

يمكنك استخدام هذه الوظائف فقط في صيغ السلوك.

‏‫ملاحظة‬

هذه الوظائف هي جزء من ميزة المعاينة، وسلوكها متاح فقط عندما تمكين ميزة البيانات العلائقية ومجموعات الخيارات والميزات الجديدة الأخرى لـ CDS. هذا إعداد على مستوى التطبيق يتم تمكينه افتراضيًا للتطبيقات الجديدة. للعثور على تبديل الميزة هذا، حدد الإعدادات، ثم حدد الميزات القادمة. ملاحظاتك قيمة للغاية بالنسبة لنا - يرجى إعلامنا برأيك في منتديات مجتمع Power Apps.

بناء الجملة

Relate(Table1RelatedTable، Table2Record)

  • Table1RelatedTable - مطلوب. بالنسبة لسجل Table1، يسجل جدول Table2 السجلات المرتبطة من خلال علاقة واحد إلى كثير أو علاقة كثير إلى كثير.
  • Table2Record - مطلوب. سجل Table2 لإضافته إلى العلاقة.

Unrelate(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 ) )

أو:

Unrelate( First( Contacts ).Products, First( Products ) )

يقوم التمرير التالي بهذه العمليات بالضبط على هذه الجداول باستخدام تطبيق به عناصر تحكم Gallery وCombo box لتحديد السجلات المضمنة.

تعتمد هذه الأمثلة على عينة البيانات التي يتم تثبيتها في بيئتك. إما أن تقوم بإنشاء بيئة تجريبية بما في ذلك عينة البيانات أو إضافة عينة بيانات إلى بيئة موجودة.

واحد إلى متعدد

وظيفة Relate

ستقوم أولاً بإنشاء تطبيق بسيط لعرض وإعادة تعيين الحجوزات المرتبطة بالمنتج.

  1. أنشئ تطبيق جدول من فارغ.

  2. من علامة التبويب عرض، قم بتحديد مصادر البيانات.

  3. في جزء البيانات، حدد إضافة البيانات> حدد المنتجات.
    جدول المنتجات هو جزء من عينة البيانات التي تم تحميلها أعلاه.

  4. في علامة التبويب إدراج، أضف عنصر تحكم Gallery فارغًا وعموديًا.

  5. تأكد من تسمية عنصر التحكم الذي أضفته للتو بـ Gallery1، ثم قم بتحريكه وتغيير حجمه لملء الجانب الأيسر من الشاشة.

  6. في علامة التبويب Items، قم بتعيين Gallery1 الذي به خاصية العناصر إلى المنتجات والتخطيط الخاص بها إلى الصورة والعنوان.

    تكوين ProductsGallery.

  7. في Gallery1، تأكد من أن عنصر تحكم Label مسمى بـ Title1، ثم قم بتعيين خاصية Text الخاصة به إلى ThisItem.Name.

    تكوين التسمية في Gallery1.

  8. حدد الشاشة لتجنب إدراج العنصر التالي في Gallery1. أضف عنصر تحكم Gallery ثاني وفارغ وعمودي، وتأكد من تسميته بـ Gallery2.

    سيعرض Gallery2 الحجوزات الخاصة بأي منتج يحدده المستخدم في Gallery1.

  9. حرك وغير حجم Gallery2 لتعبئة الربع العلوي الأيمن من الشاشة.

  10. (اختياري) أضف عنصر تحكم Label الأزرق أعلى Gallery2، عند ظهور الرسم البياني التالي.

  11. في شريط الصيغة، قم بتعيين خاصية Items الخاصة بـ Gallery2 إلى Gallery1.Selected.Reservations.

    تكوين عناصر Gallery2.

  12. في الجزء "خصائص"، قم بتعيين Gallery2 الذي به التخطيط إلى العنوان.

    تكوين تخطيط Gallery2.

  13. في Gallery2، أضف عنصر تحكم Combo box، وتأكد من تسميته بـ ComboBox1، ثم حركه وغير حجمه لتجنب حظر عناصر التحكم الأخرى في Gallery2.

  14. في علامة التبويب خصائص، قم بتعيين خاصية Items الخاصة بـ ComboBox1 إلى المنتجات.

    تعيين خاصية العناصر إلى المنتجات.

  15. قم بالتمرير إلى أسفل في علامة التبويب خصائص، وقم بتعيين السماح بالتحديد المتعدد الخاص بـ ComboBox1 إلى إيقاف.

    تعيين السماح بالتحديد المتعدد إلى إيقاف.

  16. في شريط الصيغة، قم بتعيين خاصية DefaultSelectedItems الخاصة بـ ComboBox1 إلى ThisItem.'Product Reservation'.

    تعيين DefaultSelectedItems لـ ReserveCombo.

  17. في Gallery2، قم بتعيين خاصية OnSelect الخاصة بـ NextArrow2 إلى هذه الصيغة:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    عندما يختار المستخدم هذا الرمز، يتغير الحجز الحالي إلى المنتج الذي حدده المستخدم في ComboBox1.

    تكوين NextArrow2.

  18. اضغط على F5 لاختبار التطبيق في وضع المعاينة.

مع هذا التطبيق ، يمكن للمستخدم نقل حجز من منتج إلى آخر. للحجز على منتج واحد ، يمكن للمستخدم تحديد منتج مختلف في ComboBox1 ثم تحديد NextArrow2 لتغيير هذا الحجز.

شرح وظيفة Relate في تطبيق واحد إلى كثير.

وظيفة Unrelate

عند هذه النقطة، يمكنك نقل العلاقة من سجل إلى آخر، ولكن لا يمكنك إزالة العلاقة تمامًا. يمكنك استخدام وظيفة Unrelate لقطع اتصال سجل حجز من أي منتج.

  1. من علامة التبويب عرض، قم بتحديد مصادر البيانات.

  2. في جزء البيانات، حدد إضافة مصدر بيانات>Microsoft Dataverse>حجوزات>اتصال.

  3. في Gallery2، قم بتعيين صيغة OnSelect الخاصة بـ NextArrow2 إلى هذه الصيغة:

    If( IsBlank( ComboBox1.Selected ),
        Unrelate( Gallery1.Selected.Reservations, ThisItem ),
        Relate( ComboBox1.Selected.Reservations, ThisItem )
    );
    Refresh( Reservations )
    

    تكوين الرمز الأيمن.

  4. قم بنسخ Gallery2 إلى الحافظة بتحديده ثم اضغط على Ctrl-C.

  5. قم بلصق تكرار Gallery2 إلى نفس الشاشة بالضغط على مفتاحي Ctrl-V، ثم نقله إلى الربع السفلي الأيمن من الشاشة.

  6. (اختياري) إذا قمت بإضافة تسمية فوق Gallery2، فكرر الخطوتين السابقتين لهذه التسمية.

  7. تأكد من أنه تمت تسمية تكرار Gallery2 باسم Gallery2_1، ثم قم بتعيين خاصية Items الخاصة به إلى هذه الصيغة:

    Filter( Reservations, IsBlank( 'Product Reservation' ) )
    

    يظهر تحذير تفويض، ولكن لا يهم كمية البيانات القليلة في هذا المثال.

    تعيين خاصية العناصر لـ Gallery2_1.

من خلال هذه التغييرات، يمكن للمستخدمين مسح التحديد ComboBox1 لجهة اتصال إذا لم يقم هذا الشخص بحجز منتج. تظهر جهات الاتصال التي لم تحجز منتجًا في Gallery2_1 حيث يمكن للمستخدمين تعيين كل جهة اتصال لمنتج.

شرح الوظائف ذات الصلة وغير ذات الصلة في تطبيق واحد إلى كثير.

متعدد إلى متعدد

إنشاء علاقة كثير إلى كثير

لا تتضمن Sample Data (عينة البيانات) علاقة "كثير إلى كثير"، ولكنك تقوم بإنشاء علاقة بين جدول "المنتجات" و"جدول جهات الاتصال". يمكن للمستخدمين ربط كل منتج بأكثر من جهة اتصال وكل جهة اتصال بأكثر من منتج واحد.

  1. من هذه الصفحة، حدد البيانات في شريط التنقل الأيسر، ثم حدد الجداول.

    فتح قائمة الجدول,

  2. قم بتغيير عامل تصفية الجدول لتضمين جميع الجداول.

    افتراضيا، لا تظهر نماذج الجداول.

    إزالة عامل تصفية الجدول.

  3. قم بالتمرير لأسفل، وافتح جدول المنتج، ثم حدد العلاقات.

  4. حدد إضافة علاقة>كثير إلى كثير.

  5. حدد جدول جهة الاتصال للعلاقة.

  6. حدد تم>حفظ الجدول.

اربط جهات الاتصال أو إلغاء ربطها بمنتج واحد أو أكثر

ستنشئ تطبيقًا آخر يشبه التطبيق الذي أنشأته سابقًا في هذا الموضوع، لكن التطبيق الجديد سيقدم علاقة كثير إلى كثير. ستتمكن كل جهة اتصال من حجز منتجات متعددة بدلاً من منتج واحد فقط.

  1. في تطبيق فارغ لأجهزة الكمبيوتر اللوحية، قم بإنشاء Gallery1 مثلما يوضح الإجراء الأول في هذا الموضوع.

  2. أضف عنصر تحكم Gallery عمودي آخر فارغ، وتأكد من تسميته باسم Gallery2 ، ثم قم بنقله إلى الركن الأيمن العلوي من الشاشة.

    لاحقا في هذا الموضوع، ستقوم باضافه عنصر تحكم Combo boxضمن Gallery2.

  3. في شريط الصيغة، قم بتعيين خاصية Items الخاصة بـ Gallery2 إلى Gallery1.Selected.Contacts.

    تكوين ContactsGallery - خاصية العناصر.

  4. في علامة التبويب خصائص، قم بتعيين التخطيط إلى الصورة والعنوان.

    تكوين ContactsGallery - التخطيط.

  5. في Gallery2، تأكد من أن عنصر تحكم Label مسمى بـ Title2، ثم قم بتعيين خاصية Text الخاصة به إلى ThisItem.'Full Name'.

    لن يظهر أي نص في عنصر التحكم هذا حتى تنتهي من هذا الإجراء وتعيين جهة اتصال لمنتج.

    إظهار اسم جهة الاتصال.

  6. احذف NextArrow2، وأدرج رمز إلغاء، وتأكد من تسميتها بـ icon1.

  7. قم بتعيين خاصية OnSelect الخاصة برمز الإلغاء إلى هذه الصيغة:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    تكوين رمز الإلغاء.

  8. من علامة التبويب عرض، قم بتحديد مصادر البيانات.

  9. في جزء البيانات، حدد إضافة مصدر بيانات>Microsoft Dataverse>جهات اتصال>اتصال.

  10. ضمن Gallery2، أضف عنصر تحكم Combo box، تأكد من تسميته بـ ComboBox1، ثم قم بتعيين خاصية Items الخاصة به إلى جهات الاتصال.

    تكوين خاصية عناصر مربع التحرير والسرد.

  11. في علامة التبويب خصائص، قم بتعيين السماح بالتحديد المتعدد إلى إيقاف.

    تكوين خاصية تخطيط مربع التحرير والسرد.

  12. أدرج رمز إضافة، وقم بتعيين خاصية OnSelect الخاصة به إلى هذه الصيغة:

    Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
    

    تكوين رمز الإضافة.

مع هذا التطبيق، يمكن للمستخدمين الآن ربط مجموعة من جهات الاتصال بكل منتج بحرية وغير ذات صلة.

  • لإضافة جهة اتصال إلى منتج، حدد جهة الاتصال في مربع التحرير والسرد في أسفل الشاشة ، ثم حدد رمز الإضافة.

  • لإزالة جهة اتصال من منتج، حدد رمز إلغاء لجهة الاتصال هذه.

    على عكس علاقة واحد إلى كثير، تسمح علاقة كثير إلى كثير للمستخدمين بربط نفس الاتصال بمنتجات متعددة.

شرح الوظائف ذات الصلة وغير ذات الصلة في تطبيق كثير إلى كثير.

بالعكس: المنتجات ذات الصلة وغير ذات الصلة مع جهات اتصال متعددة

علاقات كثير إلى كثير متناظرة. يمكنك توسيع المثال لإضافة منتجات إلى جهة اتصال ثم التنقل بين الشاشتين لتوضيح كيفية ظهور العلاقة من أي اتجاه.

  1. قم بتعيين خاصية OnVisible الخاصة بـ Screen1 إلى تحديث( المنتجات ).

    عند تحديث علاقة واحد إلى كثير أو كثير إلى كثير، يتم فقط تحديث بيانات جدول الوسيطة الأول من مكالمة الربط أو إلغاء ربط. يجب تحديث الثانية يدويًا إذا كنت تريد التنقل بين شاشات هذا التطبيق.

    تعيين خاصية OnVisible إلى وظيفة Refresh.

  2. تكرار Screen1.

    ستتم تسمية التكرار بـ Screen1_1 وسيشكل الأساس للبحث عن العلاقات من جانب جهات الاتصال.

    تكرار شاشة.

  3. لإنشاء العرض العكسي، قم بتغيير هذه الصيغ في عناصر تحكم 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 )

    ستبدو النتيجة مشابهة جدًا للشاشة السابقة ولكنها تأتي في العلاقة من جانب حهات الاتصال.

    إظهار علاقة كثير إلى كثير بدءًا بجهات الاتصال.

  4. أدرج رمز السهمين لأعلى ولأسفل، وقم بتعيين خاصية OnSelect الخاصة به إلى Navigate( Screen1, None ). يمكنك القيام بنفس الشيء على Screen1باستخدام الصيغة Navigate( Screen1_1, None ).

    إضافة تنقل بين الشاشات.

باستخدام هذه الشاشة الجديدة ، يمكن للمستخدمين إضافة جهة اتصال إلى منتج ثم الانتقال إلى عرض جهات الاتصال ورؤية المنتج المرتبط بها. العلاقات متناظرة ومشتركة بين الشاشتين.

إظهار علاقة كثير إلى كثير من أي من الجانبين.