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

كيف يمكننى ربط مجموعة بيانات فى جدول بمجموعة أخرى

بدأه khaliloozx في 15 أبريل 2009 · 1 رد · 1,000 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

كيف حالك إن شاء الله دائمــاً بخير ؟

أما بعد

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

وهناك طلب للعميل استوقفنى واوقفنى

سأشرح لكم الطلب

العميل لدى يتعامل مع مجموعة وسطاء كل وسيط يحضر مجموعة عملاء

الرجل يريد أن يربط العملاء بالوسيط

بمعنى لوافترضنا ان "س" من الوسطاء أحضر عميلين "ص" و "ع"

الرجل بريد ان يعرف مصدر العميل

انا فكرت فى الموضوع ووجدت حلا لم أوفق الى الان فى كتابته برمجيا

الحل عن طريق اضافة حقل فى جدول العملاء يسمى الوسيط مثلا

وعند كتابة اسم الوسيط اثناء تسجيل البيانات يقوم الكود بجلب الاى دى الموجود فى جدول الوسطاء من خلال اسمه

ويقوم بادراجه فى حقل الوسيط بجدول العملاء

ارجو ان تكونوا فهمتم مقصدى

وواثق باذن الله اننى سأجد حلا هنا

شكراً لكم

والسلام عليكــم ورحمـة الله وبركاتــه ،،

#2

السلام عليكم...

تمام! الفكرة التي ذكرتها في سؤالك هي فعلاً ما نستخدمه في مثل هذه الحالات، حيث يتم ربط جدولين بعلاقة "واحد - إلى - مجموعة" أو "طرف - إلى - أطراف" (One-to-Many)، كما في سؤالك حيث أن كل وسيط (واحد) يقابله مجموعة من العملاء (مجموعة). و يكون في هذه الحالة جدول الوسطاء هو الجدول "طرف" أو "الرئيسي" و جدول العملاء هو الجدول "أطراف" أو "الفرعي".

لإنشاء هذه العلاقة يجب أن يحتوي الجدول الرئيسي على حقل مفتاح (Key) يحتوي على رقم مميز لا يتكرر لكل سجل. و حسب ما ذكرت في سؤالك فأنت لديك هذا الحقل الذي تسميه "آي دي" (ID). أما الجدول الفرعي فيجب أيضاً أن يحتوي على حقل يأخذ قيمه من الحقل المفتاح في الجدول الرئيسي. هذا الحقل يسمى "المفتاح الأجنبي" (Foreign Key) للربط مع الجدول الرئيسي. و هي نفس الفكرة التي تشير إليها في سؤالك.

نأتي إلى تطبيق ذلك عملياً (بفرض أنك أضفت الحقل الخاص برقم الوسيط في جدول العملاء):

1. من القائمة Project اختر الأمر Components لعرض نافذة المكونات.

2. إذا كنت ستستخدم المكون Data Control العادي الموجود مع Visual Basic فابحث عن البند Microsoft Data Bound List Controls 6.0 و قم بتحديده (تظهر أمامه إشارة صح)، ثم انقر OK و سوف تضاف أداتان هما DBList و DBCombo إلى صندوق الأدوات.

3. إذا كنت ستستخدم المكون ADOdc Control فابحث عن البند Microsoft DataList Controls 6.0 (OLEDB و قم بتحديده (تظهر أمامه إشارة صح)، ثم انقر OK و سوف تضاف أداتان هما DataList و DataCombo إلى صندوق الأدوات.

في نافذة تسجيل العملاء (أو إضافة عميل جديد):

* أضف المكون Data Control أو ADOdc إلى النافذة (حسب ما تريد أو تفضل).

* اربط الـ Data Control أو الـ ADOdc مع جدول الوسطاء في قاعدة البيانات.

* أضف المكون DBCombo (إذا استخدمت المكون Data Control) أو أضف المكون DataCombo (إذا استخدمت المكون ADOdc).

*** سواءً أضفت DBCombo أو DataComb:

* اذهب إلى الخاصية RowSource و اختر الـ Data Control أو الـ ADOdc.

* اذهب إلى الخاصية ListField و اختر حقل اسم الوسيط.

* اذهب إلى الخاصية BoundColumn و اختر حقل رقم الوسيط (الـ آي دي).

** في كود تعبئة أو حفظ بيانات العميل اقرأ قيمة الخاصية BoundText و أدرج هذه القيمة في حقل رقم الوسيط في جدول العملاء. الخاصية BoundText ستعطيك رقم الوسيط المقابل لاسم الوسيط الذي يتم اختياره من الـ Combo.

الكود سيكون شبيهاً بالتالي:

  1. ' في بداية الإجراء للتأكد من أنه تم اختيار العميل من القائمة
  2. If Not DataCombo1.MatchedWithList Then
  3. MsgBox "الرجاء اختيار اسم العميل من القائمة"
  4. DataCombo1.SetFocus
  5. Exit Sub
  6. End If
  7. ' ...
  8. ' ...
  9. ' ...
  10. ' ...
  11. ' إدراج رقم الوسيط في جدول العملاء - يعتمد عليك أنت و الطريقة التي تستخدمها
  12. Adodc1.RecordSet("اسم حقل رقم الوسيط") = DataCombo1.BoundText
  13. ' ===================== أو ==========================
  14. Data1.RecordSet("اسم حقل رقم الوسيط") = DataCombo1.BoundText
  15. ' ===================== أو ==========================
  16. RS("اسم حقل رقم الوسيط") = DataCombo1.BoundText
  17. ' ===================== أو ==========================
  18. SQL = "INSERT INTO اسم جدول العملاء (field1, field2, ..., اسم حقل رقم الوسيط, ..., fieldn)
    VALUES (value1, value2, ..., " & DataCombo1.BoundText & ", ..., valuen)"
  19.  

* طبعاً الـ Adodc1 أو الـ Data1 المذكورين في الأسطر الأخيرة هو المكون المستخدم في حفظ البيانات و ليس المكون المستخدم لجلب أسماء و أرقام الوسطاء، أما RS فهي كائن من النوع ADODB.Recordset معرفة سابقاً و مرتبطة بجدول العملاء، أما SQL فهي متغير من النوع String تستخدم فيما بعد مع ADODB.Command لتنفيذها.

،رجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…