السلام عليكم : الاخوة الأعضاء هل من احد يدلني على كيفية ربط استعلامين مستنتجين من جدولين بعلاقة master/ details لانني حاولت وبحث ولم اجد ، هل يتم ذلك بواسطة join بين الاستعلامين .. ارجو أن تنوروني بالصواب . :wacko:
ربط استعلامين بعلاقة Master / Details
السلام عليكم
أخي الكريم الملف المرفق هو عبارة عن مثال موجود مع دلفي 5 قمت بإرفاق ملف قاعدة البيانات داخله و هو بلاحقة GDB
في المثال أضغط على Browse ثم Defin Query لعمل إستعلام عن تاريخ ثم قم بالنقر على Activate Query
و لاحظ ماذا يحصل
أرجو أن يكون فيه ما تريد
و السلام ختام
I'm Away For Sometimes
I'll Finish My Works
Come Back Soon
More Study > More Search > More Try > More Learning > Great Success
الاخ العزيز روبر شكراً على ردك القيم ، ولكن المثال لم يفدني ونوع الداتا بيز لم يمشي معي ... هل العموم انا اريد ان اسال عن كود برمجي لربط استعلامين بعلاقة مستر ديتيلز / لانه من داخل الخصائص لا يوجد هذا الشي وجزاك الله خيراً واتمنى من الخبراء المساعدة .
هل يمكن أن تشرحوا لنا master/ details من فضلكم
السلام عليكم...
يمكننا إنشاء علاقة Master/Details بين استعلامين أو بين استعلام و جدول باستعمال الخاصية DataSource للاستعلام الذي يشكل الجانب Details بشرط أن يحتوي استعلام الـ Details على بارامتر (Parameter) أو بارامترات بنفس اسم الحقل الذي نريد الربط معه في الاستعلام (أو الجدول) الـ Master.
مثلاً نفرض أن لدينا Query1 لجلب بيانات الطلبة (الرقم، الاسم، ... إلخ) وأن لدينا Query2 لجلب درجات المواد التي تخص الطالب الذي يتم تحديده من Query1. لإنشاء علاقة Master/Details بين الاستعلامين:
1. نقوم بإضافة مكون DataSource (مثلاً DataSource1) من صفحة Data Access ثم نربطها بالاستعلام الـ Master من خلال الخاصية DataSet.
2. نفرض أن جملة SQL الخاصة باستعلام الطلبة (الـ Master أي Query1) هي "SELECT * FROM Students" و أن الجدول يحتوي على حقل باسم StdID فيه رقم تعريف الطالب.
3. نربط الاستعلام الثاني (Query2) الذي هو الاستعلام Details بالـ DataSource1 المرتبطة بالـ Query1 و ذلك عن طريق الخاصية DataSource للاستعلام Query2.
4. نفرض أننا نريد أن نربط الاستعلامين عن طريق رقم الطالب، أي الحقل StdID. إذن كما قلنا في البداية، يجب أن تحتوي جملة SQL الخاصة بالـ Query2 (أي الاستعلام Details) على بارامتر بنفس اسم الحقل الذي نريد الربط معه في Query1 (الاستعلام Master)، أي بارامتر باسم StdID مسبوقاً بشارحة ":"، مثلاً:
SELECT * FROM Marks WHERE (Marks.StdID = :StdID)
* ليس من الضروري أن يكون الحقل في جدول Marks باسم StdID لكن اسم البارامتر (الذي بعد علامة = في جملة SQL) يجب أن يكون مطابقاً لاسم الحقل الذي نريد الربط معه في الجدول Master. إن هذا الربط يجعل DataSource1 تزود Query2 بقيمة البارامتر StdID كلما تم تغيير السجل الحالي في Query1.
5. اضبط الخاصية Prepared للـ Query2 (أي الـ Details) على True لتفعيل ربط البارامتر بالحقل المقابل له.
6. افتح الـ Query1 أولاً ثم الـ Query2.
* إذا كنت تقوم بإغلاق الـ Query2 و فتحه برمجياً (بالكود) فاجعل الفتح هكذا:
Query1.Prepared := True; Query1.Open // or Query1.Active := True;
بهذا يتم الربط. طبعاً بما أن استعلام الـ Details يرتبط بـ DataSource للحصول على قيمة بارامتره فلا فرق أن تكون الـ DataSource مرتبطة بجدول أو استعلام آخر ليكون هو الـ Master.
______________________________________
بالنسبة إلى الأخ "أمناينلواد": علاقة Master/Details هي ما يسمى في لغة SQL بعلاقة "واحد إلى مجموعة" أو "واحد إلى أطراف" (One-To-Many relationship) و التي تعني أن كل سجل في الطرف الأيسر (One) يقابله سجل واحد أو أكثر في الجانب الأيمن (Many). مثلاً كل سجل طالب (One) تقابله مجموعة سجلات المواد التي يدرسها (Many)، أو كل سجل فاتورة تقابله مجموعة سجلات الأصناف المدرجة في الفاتورة.
غالباً ما يتم إنشاء هذه العلاقات باستعمال لغة SQL عن طريق الروابط (Joins)... و القصة طويلة. لكن يمكن إنشاء هذه العلاقة من داخل دلفي بالربط بين جدولين أو استلامين أو جدول و استعلام، بحيث مثلاً عندما نحدد سجل أحد الطلبة في DataGrid1 تظهر لنا جميع المواد التي يدرسها ذلك الطالب فقط في DataGrid2.
نرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
الف شكر يا اخ ناجي وإن شاء الله موفق دائماً وجزاك الله خيرا
بارك الله فيك والله ما قصرت في الشرح