الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في العلاقات

مغلق
بدأه ماهمه شي في 5 أغسطس 2005 · 2 رد · 834 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

يا اخوان

اعاني صعوبة كبيرة في تنفيذ برنامج يحتوي على جدولين بينهم علاقة عن طريق استخدام اكسس

كبداية

1. هل يجب ربط الجدولين من قاعدة البيانات

2. اذا كان الجدول الثاني لا يوجد به مفتاح اساسي هل من الممكن الاستمرار في ربط الجداول في الدوت نت

3. ماذا افعل بالجدول الثاني اذا كان ليس به مفتاح اساسي هل اضع ترقيم تلقائي

4. طلب ثقيل شوي (هل من الممكن ان يقوم احد خبراء المنتدى بعمل برنامج بسيط يربط به جدولين ومن ثم اظهار الجدول الأول في التكست بوكس والثاني في الداتا جريد ويشمل البرنامج التنقل بين السجلات والحذف والحفظ والاضافة )

ولكم جزيل الشكر

#2

السلام عليكم

بالنسبة للسؤال الأول الجواب لا, لا يلزم ربطهم في قاعدة البيانات لان الربط لابد أن يتم في البرنامج

وهذا يعني أن ربطهم في قاعدة البيانات يكون عديم الفائدة إذا كانت الواجهة لبرنامج أخر مثل VB أو #C أو غير ذلك

إذا جواب السؤال الأول ( الربط لا بد أن يتم في الـ VB.NET )

الربط في الـ VB.NET يكون أما في الـ Design Time أو في الـ Run Time ( بالكود )

طريقة ربط في الـ Design Time تكون كالتالي ( على إعتبار أنك عملت DataAdapters و DataSet و إتصال )

ستحتوي الـ DataSet على الجدولين بعد عملية الـ Generate DataSet لكل من الـ DataAdapters

الصورة الأول توضح العنصر الذي يتم به الربط بين الجدولين شاهد الصورة

05_08_05_08_37_19_1123256239ElementToEstablishRS.gif

بعد إدراج هذا العنصر على أحد الجدولين سيظهر لك صندوق حوار لإكمال عملية الربط بهذا الشكل

05_08_05_08_39_20_1123256360Relations.gif

إتبع الخطوات التي فيه بالضبط , بعدها سيكون الربط ظاهر أمامك بهذا الشكل

05_08_05_08_40_50_1123256450afterRS.gif

الان لربط الـ DataGrid و بالتحديد في الخاصية DataMember على اعتبار أن الـ DataSource تساوي الـ DataSet

المهم أن الربط سيكون باسم العلاقة وهو MainTableDetails بهذا الشكل يجب أن تربط البيانات الفرعية

05_08_05_08_44_16_1123256656DataGridBindindToRelationShip.gif

أما بالنسبة للربط عن طريق الـ RunTime سيكون بإنشاء عنصر من نوع DataRelation يتم بعد تعريفه بالعامودين

المراد الربط بينهما بإن نضم هذا العنصر في الـ DataSet ثم نربط الـ Data Grid عبر هذا العنصر بهذا الشكل

إنشاء عنصر الـ DataRelation

 Me.Ds1.Relations.Clear()
            Dim DR As New DataRelation( _
            "MainDetails", Ds1.MainTable.CarIDColumn, _
            Ds1.Details.CarIDColumn)

هذا العنصر له ثلاثة ممررات

الأول الاسم المنطقي ( اي اسم نختاره لتمييز العلاقة بين الجدولين , يفضل وضع اسم الاب مع اسم الابن )

الثاني عامود جدول الأب

الثالث عامود جدول الابن

ثم نضم العنصر DataRelation في الـ DataSet بهذا الشكل

  'Add the Relation to the DataSet
            Ds1.Relations.Add(DR)

ثم يتم ربط الـ Data Grid مثلاً عبر هذه العلاقة ( كونها تحمل البيانات الفرعية (جدول الابن) ) بهذا الشكل

 'Bind Data Grid
DataGrid1.SetDataBinding(Ds1, "MainTable.MainDetails")

كل هذه الامور ستجدها في المرفق إن شاء الله مع وجود مشروعين الأول Start لغرض التطبيق عليه

إنسخ ( قاعدة البيانات من المشروع Completed في المجلد الـ bin وضعها في نفس المجلد في المشروع Start )

و الثاني Completed كامل بالطريقتين التي ذكرتهما لك

بالنسبة للسؤال الثاني الجواب نعم ( في الأصل لا يلزم لعملية الربط ) لكنه أفضل إن وجد لإمور أخرى مثلاً (السرعة , التنسيق,...الخ)

ولأسباب كثيرة منها مثلاً إذا كنت ترغب بالتحديث و الإضافة عن طريق مساعدة البيئة IDE فإنه يلزمك ذلك (المفتاح الاساسي)

أما إذا كنت لا ترغب بتلك المساعدة و تريد التحديث و الإضافة و غير ذلك بشكل يدوي (برمجي بالكود ) فلا يلزمك مفتاح اساسي للجدول

السؤال الثالث : الجواب مماثل للسؤال الثاني ( نعم أنصحك دائماً أن تكون الجداول بها مفاتيحها الأساسية حتى ولو كان للتنسيق فقط

كرقم تلقائي .

السؤال الرابع : المرفق فيه المطلوب ماعدى الأضافة و البحث و الحذف و غير ذلك تجده على هذا الرابط

موضوع مشابة لطلبك تفضل الرابط

وهنالك مواضيع أخر مشابهه ( لكن أبحث في المنتدى)

هذا والله أعلم

RelationsBothDesignAndRunTimes.zip

في المثال يتضح المقال

#3

السلام عليكم ورحمة الله

اخي الغملاسي

لا ادري كيف اشكرك على شرحك البسيط الدقيق

تمت التجربة وكل شي تمام

جزاك الله خيرا ونفع بعلمك جميع المسلمين

هذا الموضوع مغلق.

مواضيع مشابهة