من الشائع لدى المطورين إنشاء قائمة قيم (Value List) لاستخدامها في النماذج كقائمة منسدلة لحقل ما، ولكن أحيانا قد تحتوي قائمة القيم على الكثير من القيم، وهنا من المهم استخدام قائمة قيم شرطية أو كما تسمى أحيانا قائمة قيم علائقية أو قائمة قيم ديناميكية.
وللتوضيح؛ تخيل معي أن لديك جدولا لعناوين العملاء بالكويت يحتوي على عدة حقول منها: المحافظة، المنطقة، القطعة، الشارع، رقم المنزل، وهاتف المنزل. وتريد أن تستخدم قائمة قيم لكل من حقلي المحافظة والمنطقة بما أنهما قد يحتويان على قيم متكررة.
في الحقيقة في هذا المثال لن تواجه أي مشكلة عندما تستخدم قائمة القيم لحقل المحافظة، بما أن عدد محافظات الكويت محدود (6 محافظات).
ولكن ستواجه مشكلة حقيقية -أو بالأحرى أكثر من مشكلة- عندما تستخدم قائمة قيم لحقل المنطقة، بما أن عدد مناطق الكويت يفوق 100 منطقة.
فالمشكلة الأولى: أن قائمة القيم ستكون طويلة جدا.
والمشكلة الثانية: أن عند اختيار المحافظة يجب أن لا تظهر كل المناطق، بل فقط المناطق التابعة للمحافظة المختارة.
وهنا تبرز أهمية إنشاء قائمة قيم شرطية أو ديناميكية.
ولكن؛ طريقة إنشاء قائمة قيم شرطية في FileMaker Pro تختلف قليلا عن الطرق المعتادة، لذلك إليك طريقة الإنشاء خطوة بخطوة بمثال عملي:
أولا: أنشىء الجداول التالية (File -> Manage -> Database -> Tables):
1. جدول المحافظات، ويحتوي على:
رمز المحافظة: رقم (مفتاح رئيسي).
اسم المحافظة: نص.
2. جدول المناطق، ويحتوي على:
رمز المنطقة: رقم (مفتاح رئيسي).
رمز المحافظة: رقم (مفتاح أجنبي).
اسم المنطقة: نص.
3. جدول العناوين، ويحتوي على:
الرمز: رقم (مفتاح رئيسي).
رمز المحافظة: رقم (لأنه سيقوم بتخزين رمز المحافظة من جدول المحافظات).
رمز المنطقة: رقم (لأنه سيقوم بتخزين رمز المنطقة من جدول المناطق).
القطعة: نص.
الشارع: نص.
رقم المنزل: نص.

ثانيا: أنشىء العلاقات التالية (File -> Manage -> Database -> Relationships):
1. علاقة رأس بأطراف: بين حقل رمز المحافظة بجدول المناطق و حقل رمز المحافظة بجدول المحافظات (حيث أن كل منطقة بجدول المناطق يجب أن تتبع محافظة ما بجدول المحافظات).
2. علاقة أطراف بأطراف: بين حقل رمز المحافظة بجدول العناوين وحقل رمز المحافظة بجدول المناطق (وهذا هو الأمر غير المعتاد ولكن هذا ما يتطلبه FileMaker Pro لإنشاء قائمة قيم شرطية).

ثالثا: أنشىء قوائم القيم التالية (File -> Manage -> Value Lists):
1. قائمة قيم المحافظات: وتستمد قيمه من جدول المحافظات.
2. قائمة قيم المناطق حسب المحافظة: وتستمد قيمه من جدول المناطق، مع تفعيل خيار:
“Include only related values starting from:” ومن ثم اختيار جدول العناوين، بناء على العلاقة التي قمنا بإنشائها مسبقا بين جدول العناوين وجدول المناطق.


رابعا: أنشىء النماذج التالية (File -> Manage -> Layouts):
1. نموذج لجدول المحافظات.
2. نموذج لجدول المناطق.
3. نموذج لجدول العناوين، وفي هذا النموذج:
أ. غيّر عنصر تحكم حقل المحافظة إلى قائمة منسدلة لتعرض قيم قائمة المحافظات.
ب. غيّر عنصر تحكم حقل المنطقة إلى قائمة منسدلة لتعرض قيم قائمة المناطق حسب المحافظة.


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