السلام عليكم ورحمة الله وبركاتة
تحية طيبة لمشرفين واعضاء المنتدي الرائع والمفيد
في اول مشاركة لي احب ان اتكلم في موضوع هام قابلتني فيه مشكلة كبيرة وهو نادر ما تم الحديث عنه هنا في هذا المنتدي او في اي منتديات اخري متعلقة بالديلفي وهو متعلق باستخدام ما يسمي master/detail relationship وذلك بأستخدام adodataset وليس adotable كيف وما هي المشكلة::
المشكلة تتمثل في الاتي:
معظم الامثلة علي هذة العلاقة تقوم بربط جدولين احدهما كماستر والاخر ديتال عن طريق اضافة العناصر من نوع adotable ومثال علي ذلك مثلا العلاقة بين جدول العملاء وجدول الفواتير حيث كل عميل يكون له مجموعة فواتير وهذا النوع يسهل ربطة عن طريق هذة العلاقة حيث يتم بأضافة عنصرين من نوع Adotable وربط كل عنصر بجدول تم عمل ربط بين هؤلاء العنصرين باستخدام الخاصية mastersource و masterfields لجدول الفواتير ويتم عمل ذلك بكل سهولة. ويمكن عرض محتويات جدول الفواتير في dbgrid لتظهر فواتير كل عميل علي حدي عند التنقل بين العملاء. وفي هذة الحالة ايضا يمكن التعديل في اي فاتورة او حذف اي فاتورة لاي عميل بسهولة.
ماذا لو كان الربط اكثر تعقيدا من ذلك. بمعني ان هناك جدول ثالث للمخازن يحتوي علي رقم المخزن واسم المخزن وكل فاتورة يتم وضع رقم المخزن المصروفة منه في خانة رقم المخزن بجدول الفواتير. بمعني اخر انه هناك علاقة بين جدول الفواتير وجدول المخازن. اذن الان نريد ان نعرف فواتير كل عميل معروضة بنفس الطريقة في dbgrid ومتضمنة اسم المخزن المصروفة منه. في هذة الحالة لا يمكن ان نستخدم العنصر ADOTABLE لثميل العلاقة Detail لان هناك بيانات مطلوبة من اكثر من جدول معا وهما جدول الفواتير وجدول المخازن. لذلك سنقوم بأستخدام العنصر AdoDataSet ونقوم بكتابة Commandtext والربط بين الجدولين لعمل تحديد بيانات الفواتير من جدول الفواتير واسم المخزن من جدول المخازن. جيد جدا الان يمكننا التنقل بين العملاء سنشاهد فواتير كل عميل وبيانتها واسم المخزن ايضا المصروفة منه ولكن هنا المشكلــــــــــــــــــــــــــــــــة. ماذا لو اردنا تعديل المخزن او حذف فاتورة معينة؟؟؟؟؟ لن نستطيع التعديل او الحذف و لو تم حذف السجل سيتم حذف المخزن ايضا من جدول المخازن وليس حذف الفاتورة فقط لان السجل هو مزيج من جدولين الفواتير والمخازن؟؟؟؟؟؟؟؟؟؟؟؟؟
هي مشكلة كبيرة ارجو ممن لدية الفكرة الجيدة التكرم علينا بالرد واعتقد ان الموضوع هام ولم يتم مناقشة شيء بهذا الشكل من قبل.
