![]() |
|
كيف التعامل مع الجداول المترابطة في دلفي؟؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيف التعامل مع الجداول المترابطة في دلفي؟؟ (/showthread.php?tid=2265) |
كيف التعامل مع الجداول المترابطة في دلفي؟؟ - backar-net - 05-08-2010 السلام عليكم MS Access 2007 & Delphi 2010 لدي جدولين في قاعدة بيانات Access بينهما علاقة one-to-many وكنت أحاول بلا جدوى الربط بينهما فكان يصادفني مشاكل دوما جربت اليوم طريقة INNER JOIN ON جربت البرنامج وتم تنفيذه بلا أخطاء وتوقعت أنها نجحت معي وأخيرا إلا أن هناك مشكلة جديدة صادفتني وهي أنني عندما أستخدم أحد التابعين Insert أو Delete مع ال ADOQuery فإن التابع يحذف السجل أو ينشئه في الجدولين المربوطين وليس في أحدهما، فالمفروض أن يخذف من طرف many أو FK فأنا مثلا أحذف سجل مادة ما من جدول المواد وإذا بالتابع قام بحذف سجل المادة وسجل صنف المادة من جدول الأصناف المرتبط به والعكس فإذا أردت أن أضيف مادة من صنف موجود أصلا في جدول الأصناف قام التابع بتكرار هذا الصنف في الجدول فكلما أردت إضافة علبة مسحوق غسيل مثلا كمادة : تضاف هذه المادة في جدول المواد ويضاف أيضا الصنف "منظفات" في جدول الأصناف حتى لوكان هذا الصنف موجودا أشكر مساعدتكم كيف التعامل مع الجداول المترابطة في دلفي؟؟ - Lam.Abdeldjalil - 05-08-2010 و عليكم السلام ورحمة الله وبركاته مرحبا بك أخ backar-net معنا في المنتدى قوانين المنتدى http://www.delphi4arab.net/forum/showthread.php?tid=29 إقتباس :لدي جدولين في قاعدة بيانات Access بينهما علاقة one-to-many وكنت أحاول بلا جدوى الربط بينهما فكان يصادفني مشاكل دومامانوع المشاكل؟ أذكر كل مشكل على حدى و سوف نقوم بحلها جميعا إن شاء الله إقتباس :فأنا مثلا **** أن أحذف سجل مادة ما من جدول المواد وإذا بالتابع قام بحذف سجل المادة وسجل صنف المادة من جدول الأصناف المرتبط به ضع الكود كل من الإضافة و الحذف ليتم دراسته مع وضع الإستعلام في الربط و السلام عليكم كيف التعامل مع الجداول المترابطة في دلفي؟؟ - backar-net - 06-08-2010 السلام عليكم لدي الجدولين كود : Categories(Cat_ID; Cat_Name)
Articles(Art_ID; Art_Name; Cat_ID.....)أضع في الأول الأصناف الموجودة وفي الثاني المواد المخزنة في المستودع وبنهما علاقة one-to-many حيث أن الحقل Cat_ID هو مفتاح رئيس في الجدول الأول ومفتاح أجنبي FK في الجدول الثاني ربطت الجدولين بمكون ADOQuery بعبارة SQL التالية كود : SELECT * FROM Categories INNER JOIN Articles ON Categories.Cat_ID=Articles.Cat_IDمن أجل إظهار المواد وأصنافها ضمن DBGrid فوجئت أنني عندما استعمل الدالة Insert بالشكل التالي كود : ADOQuery1.Insert;
ADOQuery1.Post;فإن الدالة تضيف حقلا جديدا في كل من الجدوليبن المربوطين مع أنني أردت أن تضيف في الجدول الذي يحوي FK بالاعتماد على جدول الأصناف وكذلك الأمر بالنسبة للدالة Delete فكما ذكرت في المثال فلو أن لدي علبة منظفات أردت أن أحذفها لحذف أيضا الصنف منظفات من جدول الأصناف إخوتي هل لهذه المشكلة حل أم أنني مخطئ في الطريقة أصلا كيف التعامل مع الجداول المترابطة في دلفي؟؟ - Lam.Abdeldjalil - 06-08-2010 و عليكم السلام و رحمة الله التعامل بهذا النوع من الربط ليس بهذه السهولة في استعلامك المعطى تقوم بإختيار كل الحقول من الجدولين نظريا عند الإضافة يضاف حقل في كلا الجدولين ( إذا لم تحدد قيمة المفتاح الأساسي بالنسبة للجدول الأصناف و لايمكن تحديده إذا كان من نوع Autoinc ) نفس الشيئ بالنسبة للحذف و الله أعلم لذا أقترح عليك حلين : 1- بدأتها Sql أكملها Sql للإضافة : AdoCommand مع الأخذ بعين الإعتبار أن Art_Id من نوع Autoinc مثال كود : ADOCommand1.CommandText :='INSERT INTO Articles(Cat_ID, Art_Name) VALUES (CategoriesCat_ID.value,''product name'')' ;
ADOCommand1.Execute ;كود : ADOCommand1.CommandText :='delete from Articles where Cat_ID ='+inttostr(CategoriesCat_ID.value ) ;
ADOCommand1.Execute ;http://www.delphi4arab.net/forum/showpost.php?p=18760&postcount=4 بالتوفيق كيف التعامل مع الجداول المترابطة في دلفي؟؟ - Lam.Abdeldjalil - 30-08-2010 السلام عليكم و رحمة الله وجدت شيئا متعلقا بالتساؤل في هذا الكتاب صفحة 35 Using_ADO_from_Delphi إقتباس :أي لا تستخدم المناهج Append /Insert /Edit /Post/Delete إذا كنت تستعلم من أكثر من جدول فهي مخصصة للتعامل مع جدول واحد فقط والسلام عليكم |