![]() |
|
هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة (/showthread.php?tid=4644) |
هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - cosinuszero - 16-10-2012 السلام عليكم و رحمة الله و بركاته عندي جدولان في قاعدة البيانات أحدهما ماستر و الثاني ديتال و لقد و ضعت هذه الرابطة بين الجدولين في الدلفي فهل عند حذف سجل من الماستر أكون قد تخلصت من السجلات المرتبطة معه في جدول الديتال أو يجب أن أحذفها تباعا(فإن كانت كذلك فما هي أفضل طريقة) شكر كبير لهذا المنتدى و لكل أعضائه. هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - لؤي - 16-10-2012 و عليكم السلام إن فهمت جيدا سؤالك فهذا يتعلق بنوع الحقل هل هو أولي أم ثانوي هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - cosinuszero - 16-10-2012 نعم الحقل أولي. هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - Najy Ibraheem - 16-10-2012 السلام عليكم... إذا كانت العلاقة منشأة فقط في Delphi (علاقة Master/Details) دون وجود علاقة حقيقية (Relation) في قاعدة البيانات فإن حذف السجلات الفرعية (Detail) يتم برمجياً باستعمال Command أو Query لتنفيذ جملة SQL تشبه التالية: كود : DELETE FROM detail_table WHERE (foreign_key_field = master_id_value)حيث detail_table اسم الجدول الفرعي. foreign_key_field اسم الحقل في الجدول الفرعي الذي يحتوي على رقم تعريف السجل في الجدول الرئيسي. master_id_value رقم تعريف السجل في الجدول الرئيسي. أما إذا كانت هناك علاقة بين الجدولين في قاعدة البيانات فإن الأمر يعتمد على ما إذا كان هناك تكامل مرجعي (ٌReferential Integrity) بخصوص حذف السجلات الفرعية عند حذف السجل الرئيسي المرتبط بها (Cascade Delete). فإذا كان هناك تكامل مرجعي بخصوص الحذف فسيتم حذف السجلات الفرعية تلقائياً عند حذف السجل الرئيسي المرتبط بها، و إلا فستحتاج إلى حذفها برمجياً كما سبق. نرجو الاستفادة و السلام. هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - cosinuszero - 16-10-2012 أحسنت أخي. لذا فإن أفضل الطريقتين الاولى و دلك بربط الجداول في sgbd. جزاك الله كل الخير. هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - cosinuszero - 16-10-2012 عفوا أقصد الطريقة الثانية. هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - Lam.Abdeldjalil - 16-10-2012 السلام عليكم ملاحظة بسيطة إقتباس :فإذا كان هناك تكامل مرجعي بخصوص الحذف فسيتم حذف السجلات الفرعية تلقائياً عند حذف السجل الرئيسي المرتبط بها،هذا في حالة ما إذا كانت referential action ـ = CASCADE على ما أظن أغلب الـ rdbms تدعمها كود : http://en.wikipedia.org/wiki/Foreign_keyهل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - tarek.inf - 17-10-2012 السلام عليكم اولا :حذف تسجيلة من tablemaster ;(procedure form1.Button1Click(Sender: TObject begin ;tablemaster.Delete ;end ثانيا من الخاصية: Beforedelete ل:tablemaster يتم حذف جميع تسجيلات tabledetail ;(procedure tabledetailBeforeDelete(DataSet: TDataSet var ;i:integer begin for i:=1 to tabledetail.recordcount do begin try ;tabledetail.Last ;tabledetail.Delete except ;end;end ;end هل عند حذف سجل من ماستر, السجلات المرتبطة معه في الديتال تحذف مباشرة - Najy Ibraheem - 17-10-2012 السلام عليكم... مجرد نصيحة: لا تستعمل الحلقات في مثل هذا الأمر. إذا كان الأمر يتعلق بحذف 10 سجلات أو 100 سجل فربما يكون مقبولاً، و لكن عند التعامل مع آلاف أو مئات الألاف من السجلات فإن استعمال حلقة في مثل هذا الأمر سيكون بطيئاً جداً جداً، و ربما يؤدي إلى توقف البرنامج عن الاستجابة إلى حين انتهاء الحلقة. سلام. |