![]() |
|
البحث والحذف بن جدولين - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : البحث والحذف بن جدولين (/showthread.php?tid=1410) الصفحات:
1
2
|
البحث والحذف بن جدولين - kwahab - 17-12-2009 السلام عليكم ورحمة الله وبركاته عندي جدولين اي قاعدتي بيانات اذا اردت ان احذف تسجيلة من الجدول الاول ارغب في ان تحذف التسجيلة من الجدول الثاني التي تحتوي على نفس محتوى الخانة (رقم الوصل) اي N_bon . قمت بجعل N_bon في القاعدة الاولى ك index للجدول واضفت للجدول الثاني N_bon وجعلته ك index ايضا ثم ربطت الجدولين برابط intégrité référentielle بمعنى انه اذا حذقت تسجيلة من الجدول الاول تحذف تسجيلة من الجدول الثاني التي تحتوي على نفس N_bon (اي رقم الوصل) لكن تظهر هذه الرسالة عند اضافة تسجيلة الى الجدول الاول 'enregistrement maitre absent' اين المشكل ؟او ماهو الحل؟ بارك الله فيكم البحث والحذف بن جدولين - kachwahed - 17-12-2009 وعليكم السلام ورحمة الله وبركاته يرجـى عند تقديم الأسئلة تحديد محرك قواعد البيانات المستعمل (أظن Paradox هنا) وكذلك نسخة Delphi. بعد تطبيق فرض التكامل المرجعي (intégrité référentielle) هناك خيارين: أحدهما يقضي بتحديث أحد السجلات تبعا للسجل المقابل والآخر بحذف أحد السجلات بمجرد حذف السجل المقابل. أيهما فعّلت بالتحديد؟ وما رسالة الخطأ تحديدا؟ الذي يبدو أن المشكل في كون الجدول الأول يحتاج (بالضرورة) إلى سجل مقابل في الجدول الثاني وهذا ينبغي حذفه، فكل عنصر من الجدول الأول يقابله 0/n من الجدول الثاني، بدلا من أن يقابله 1/n، وهذا يتوقف على نوع الربط الذي تريده. إذا أردت تفصيل أكثر أرفق ولو جزءا من المشروع. بالتوفيق. البحث والحذف بن جدولين - kwahab - 18-12-2009 نعم اخي الكريم استعمل محرك ال paradox ودلفي 7 انا لا اعرف كثيرا حول فرض التكامل المرجعي (intégrité référentielle) لكن الذي فعلته هو الربط بين الجدولين بهذا الرابط حيث اختار Index الجدول الاول وبالمقابل index الجدول الثاني الذي هو نفسه N_bon ثم اعطي اسم للعلاقة . الذي حدث هو لما رجعت الى الدلفي غلقت ثم فتحت جداول قواعد البيانات لكن التسجيلات الموجودة سابقا لم تظهر في dbgrid .وعند الاضافة او التغيير في الجدول الاول فان هذه الرسالة تظهر'enregistrement maitre absent' وانا هدفي ان يتحقق الخياران اللذان ذكرتهما .انه اذا حدث تحديث في التسجيلة ذات الرقم n_bon في الجدول الاول فانه يحدث التحديث في الجدول الثاني ذو الرقم n_bon نفسه ونفس الشي للحذف. فكيف افعل الخيارين واتخلص من مشكل الرسالة؟ اذا رغبت سارفق المشروع في المرة القادمة وشكرا لك اخي الكريم. البحث والحذف بن جدولين - nabilkeb - 18-12-2009 مر معي نفس الاشكال (لكني لا أذكر) و لا أضن المشكلة صعبة ، كما أنني لست متأكد من الإجابة التي بحوزتي ممكن فقط ، ارفاق قاعدة البيانات (الجدولين فقط) ؟ و لنا عودة ****ــة ان شاء الله. البحث والحذف بن جدولين - kwahab - 19-12-2009 تفضلوا المشروع بالمرفقات الجدول الاول موجود ب form1 وهو table1 ,الجدول الثاني ب form8 وهو table2 اذا فهمتم عمل المشروع وعندكم اي اراء حوله لتحسينه اتمنى ان تطرحوها شكراوانا بانتظار ردودكم البحث والحذف بن جدولين - kachwahed - 19-12-2009 أخي kwahab... أولا إجعل برنامج ذو محمولية أوسع (إن صح التعبير) أو أكثر ديناميكية. لا تستعمل Alias إلا بشكل ديناميكي... أو أسهل من ذلك حدد جميع مكونات TTable واكتب في DatabaseName كود : .\BDلم يحدث معي الخلل الذي ذكرته، لأن الجدول المتعلق بـ DBGrid1 للنموذج Form8 أصلا لم يفتح! وعندما فتحته في الحدث OnShow لم يحدث أي خلل وتم إدخال البيانات بشكل عاد. للتوسع أكثر في قواعد البيانات راجع موضوع الأخ nabilkeb جزاه الله خيرا. البحث والحذف بن جدولين - kwahab - 20-12-2009 شكرا لك اخي kachwahed... لقد غيرت ال alias ولكن المشكل لم يحل وما زالت الرسالة enregistrement maitre absent تظهر عند اضافة شخص جديد الى الجدول الاول. اذا لم ينجح ربط الجدولين ناخذ محتوى N_bon من الجدول الاول ونقارنه مع جميع محتويات N_bon في الجدول التاني واذا وجدت مثيله نقوم بالعملية المرغوب فيها من تغيير او حذف فما هو الكود الذي يقوم بمسح الجدول الثاني لايجاذ نفس قيمة N_bon . بارك الله فيكم هل ربط الجدولين ضروري ليتحقق الهدف؟ ما ذا تريد ان تقول هذه الرسالة(table maitre avec enregistrements détail.impossible de modifier/supprimer)؟ البحث والحذف بن جدولين - kachwahed - 22-12-2009 إقتباس :هل ربط الجدولين ضروري ليتحقق الهدف؟أجل. إقتباس :ما ذا تريد ان تقول هذه الرسالة(table maitre avec enregistrements détail.impossible de modifier/supprimer)؟أي: لا يمكن حذف أحد السجلات إذا كان له مقابل (فرض تكامل مرجعي) في جدول آخر... أخي kwahab... أعد كتابة البرنامج بلغة لاتينية (إنجليزية أو فرنسية) ثم أرفق الملفات: pas *. dpr*.dfm*. وقاعدة البيانات فقط في ملف مضغوط وسأحاول إن شاء الله. بالتوفيق. البحث والحذف بن جدولين - kwahab - 22-12-2009 تفضل هذا نموذج يعاني نفس المشكلة قمت بالربط بين الجدولين على حسب معرفتي البحث والحذف بن جدولين - nabilkeb - 22-12-2009 الأخ السائل على حق، المشكلة التي يعاني منها فعلية ، و لست أذكر سببها ، المهم المشكل بقاعدة البيانات بحد ذاتها ، السبب (الله أعلم) ؟ أما الحل: على الأقل مبدئيــا أعد إنشاء قاعدة البيانات مع الدقة في ادخال أسماء الحقول و خصائصها ، ثم قم باستبدالها بالملفات السابقة . أنا شخصيا سجلت نفس الاشكال المطروح بالملف المرق من طرفك ، وتم حل الاشكال كما ذكرت. - على عجالة راجع المرفق . قمت بانشاء جديد لقاعدة البيانات المسماة recettes حذفت l'alias . الآن قم بادخال و حفظ البيانات الخاصة بارادات البلدبة و راقب النتيجة ---- عدم ضهور رسالة الاشكال المطروح . - كملاحظة : - لا تنسى تنبيه الأخ حول Alias هناك مايكفيك لتعرفه حول هذا الأمر بالمنتدى أبحث و طالع ماكتب . - هناك الكثير من الأخطاء التي يرجع سببها لعد التقييد اللازم للشروط برمجيـا ، يعني كنصيحة دومـــا اجعل من نفسك مستخدما للبرنامج و ليس لك أي علاقة بالبرمجة ، ستجد أخطاء و نقائص منهــا : أولا و قبل كل شيء مظهر البرنامج لابد أن يكون جميل يريح المستخدم+سهولة الاستغلال (تنظيم العناصر و الأزرار و تباعدها و تجميعها إذا أمكن حسب الحاجة) - إذا أراد المستخدم مثلا مسح كل البيانات ، أين هذه الخاصية؟ - إذا استعمل زر الإضافة و أراد إلغاء الأمر ، أين زر الإلغاء ؟ - إذا فتحت المشروع و قمت بالضغط (الفأرة) على DBGRID ماذا سيفهم المستخدم من رسالة الخطأ التي ستظهر ؟ - إذا أردت التعديل : ستضغط على زر التعديل+ادخال البيانات اللازمة للتعديل+ضغط زر " أضف " ، ليس هناك حلول أو بدائل.أولا ستظهر رسالة تأكيد على أساس إضافة جديدة بينما المستخدم يريد فقط التعديل.ثانية النتيجة هل هي إضافة أو تعديل فعلي ؟ ...... و أمور أخرى . أنا حقا أشجعك ،و هذه ملاحظات بسيطة ، لأضعك على الطريق ، و نحن بالخدمة سيدي ، و إن لم نكن لها فهي لنا ، أقصد إن لم أستطع مد يد العون لك ، فالمنتدى مليء بالأساتذة و الخبراء الكرام الذين يساعدونني و إياك . بالتوفيق أخي الكريم . |