العمل باستخدام علاقات "متعدد إلى متعدد"

مكتمل

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

رسم تخطيطي يوضح علاقة

يمكنك ربط كل ميزة مكتبية بمكاتب متعددة كما يمكن أن يحتوي كل مكتب على العديد من صفوف ميزات المكتب المرتبطة. يمكنك الوصول إلى مجموعة ميزات المكتب من صف المكتب باستخدام التعبير ThisItem.'Desk Features. للوصول إلى جميع المكاتب المرتبطة بميزة المكتب المحددة هذه، يمكنك استخدام التعبير ThisItem.Desks من صف ميزات المكتب.

كما هو موضح فِي المثال التالي، يمكنك استخدام هذا التعبير لإظهار قائمة قيم مفصولة بفواصل لكل مكتب فِي معرض.

لقطة شاشة لمعرض يعرض قائمة بالمكاتب.

قم بتعيين الخاصية Text إلى الملصق إلى المعادلة التالية، لإنجاز هامة ملء نص التسمية:

Concat(ThisItem.'Desk Features',Name ,",")

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

لقطة شاشة لإخراج أداة

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

لتعبئة العناصر فِي أحد المعارض، هناك طريقة أخرى لاستخدام العلاقة وهي السماح للمستخدم باختيار ميزة المكتب ثم استخدام الخاصية controlName.Selected.Desks.

لقطة شاشة تُظهر قائمة منسدلة بالمواقع ومعرض للمكاتب.

يعمل هذا النهج بشكل جيد عندما تسمح فقط بتحديد واحد فِي مربع التحرير والسرد. يصبح المنطق أكثر تعقيداً، إذا قمت بتمكين تحديدات متعددة. حالياً، ليس لدى Power Fx طريقة بسيطة للتعبير عن تقاطع مجموعتين، وهو أمر مطلوب لإنجاح السيناريو. الحلول ممكنة، على سبيل المثال، يمكنك التكرار من خلال جميع الميزات المحددة، وتجميع المكاتب ذات الصلة فِي مجموعة واحدة، وإزالة التكرارات، ثم استخدام المجموعة كمصدر للعنصر. ومع ذلك، سينخفض أداء هذا الأسلوب بسرعة مع تطور الجداول، وذلك بسبب طلبات Dataverse المتعددة (طلب لكل ميزة محددة).

تأسيس العلاقة

الطريقة الأساسية لتأسيس علاقة "متعدد إلى متعدد" هي استخدام الدالة Relate()، على غرار الطريقة التي تستخدمها مع علاقة "واحد إلى متعدد". لأنه لا يوجد جدول أساسي فِي العلاقة، يتمثل الاختلاف الرئيسي فِي أنه لا يهم السجل الذي يمثل المعلمة الأولى أو الثانية لـ Relate().

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

لقطة شاشة للنموذج الذي تم إنشاؤه تلقائياً والذي يتضمن بطاقة بيانات

لحل المشكلة، قم بتحديث الدالة Choices() فِي الخاصية Items للجدول الموجود على الجانب الآخر من العلاقة "متعدد إلى متعدد". لإنجاز هذه الهامة، قم بإلغاء قفل البطاقة من علامة التبويب متقدمة.

لقطة شاشة للوحة

في مثال شركة Contoso، تريد استخدام ميزات المكتب. بعد إلغاء قفل عنصر التحكم، تحقق أن الخاصية Items تُظهر ميزات المكاتب كمصدر للبيانات.

لقطة شاشة لخصائص بطاقة البيانات.

ملاحظة

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

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

لقطة شاشة لرسالة خطأ تُظهر عند إرسال نموذج به مربع تحرير وسرد متعدد التحديد.

للتغلب على هذه المشكلة، قم بإلغاء تحديد الخاصية Update وقم يدوياً بمعالجة اقتران "متعدد إلى متعدد" بعد إرسال النموذج.

لقطة شاشة للخاصية Update لعمود الجدول المرتبط بـ

سيعمل إرسال النموذج بعد إلغاء تحديد الخاصية Update. ومع ذلك، لن يتم إنشاء العلاقات بين صفوف الجدول "مكتب" و"ميزة المكتب". لتأسيس العلاقات، أضف المنطق التالي إلى الخاصية OnSelect لأيقونة الاختيار المستخدمة لإرسال النموذج افتراضياً:

  1. احفظ ميزات المكتب التي تم تحديدها فِي مربع التحرير والسرد كمجموعة. هذه الخطوة مطلوبة لأن إرسال النموذج سيعيد تعيين الحقول، وستفقد القيمة.

  2. أرسل النموذج.

  3. استخدم المجموعة المحفوظة من ميزات المكتب لتأسيس العلاقة.

لقطة شاشة للخاصية OnSelect لرمز مربع الاختيار المستخدَم لإرسال النموذج.

خيارات التصميم الأخرى

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

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

رسم تخطيطي يوضح العلاقة

ومع ذلك، لن تعرف كم من الوقت يتحدث الشخص بكل لغة ومدى إتقانه للتحدث بها.

نمط التصميم البديل الشائع هو إنشاء جدول التقاطع الخاص بك. جدول اللغة المنطوقة التالي هو جدول Dataverse مخصص آخر. يمكنك إضافة أعمدة إلى هذا الجدول لأية خصائص أخرى تصف العلاقة المحددة. بعد ذلك، سيكون لهذا الجدول الجديد العلاقات N:1 إلى "جهة الاتصال" و"اللغة".

رسم تخطيطي يعرض العلاقات بين جداول

يشبه العمل مع هذه الجداول من تطبيقك العمل مع أي جداول أخرى لها علاقات "واحد إلى متعدد" أو علاقات "متعدد إلى واحد". قد تكتشف أن بعض المنطق الإضافي سيكون مطلوباً لضمان تجربة مستخدم سلسة، نظراً لوجود جدول إضافي. من الهام فهم متطلبات تطبيقك ومعرفة ما إذا كانت علاقة متعدد إلى متعدد تحتاج إلى تتبع بيانات أخرى، لا سيما بالنظر إلى أنك بحاجة إلى اتخاذ هذا القرار فِي الوقت الذي ترتبط فيه الجداول.