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

معالجة المفاتيح الثانوية في الفورم

بدأه odai_24630 في 1 سبتمبر 2011 · 3 رد · 729 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

تحية طيبة و كل عام و أنتم بخير

هذا موضوعي الأول في منتداكم الكريم و لدي سؤال

أرغب بإنشاء فورم يعرض و يضيف و يحذف و يعدل بيانات جدول product في قاعدة بيانات northwind

بدأت بإنشاء داتا سيت جديد و قمت باختيار 3 جداول هي المنتجات و المجموعات و الموردين لكون جدول المنتجات مرتبط مع هذه الجداول بمفاتيح ثانوية

الآن سأقوم بتحويل عرض الغريد فيو إلى حالة عناصر بدلا من جدول و بتحويل كل من عامودي catigoryid و supplirID إلى كمبوبوكس و لاختيار المجموعة و المورد عند إضافة أو حذف أو تعديل منتج و لكن يظهر الكمبو بوكس أرقم و يجب أن يظهر أسماء ما هي الطريقة الصحيحة لذلك علما أنني حاولت كثير و بحثت كثير و جزاكم الله كل خير

تحياتي

#2

مرحبا بك ضمن عائلة الفريق العربي للبرمجة ، عفوا يا صديقي لم افهم المشكلة ، اذا فيه مجال ان تقوم برفع الفورم حتى نستطيع حل المشكلة :) ... تقبل مروري

#3

المشكلة هي كيفية التعامل مع أي مفتاح ثانوي في جدول ما عند إظهاره على الفورم كما تعلم المفاتيح الثانوية دائما من نوع int و يسجل فيها رقم يشير إلى رقم هو مفتاح رئيسي غالبا في جدول آخر

على الفورم لا معنى لإظهار الرقم و يجب أن يظهر الاسم

مثال : في حال إنشاء فورم لجدول product من قاعدة بيانات northwind يقوم بحذف و تعديل و إضافة بيانات إلى هذا حقول هذا الجدول

مثال آخر : لدي جدولان الأول للموظفين فيه عامودين الأول رقم موظف و الثاني اسمه و الجدول الثاني هو الدول فيه رقم الدولة و اسمها طبعا لكل موظف دولة ينتمي إليها إذا سيكون هناك مفتاح ثانوي في جدول الموظفين هو رقم الدولة

عند تصميم فورم إدخال الدول سأدخل رقم الدولة و أسمها

أما الفورم الثاني هو للموظفين سأدخل رقم الموظف و اسمه و يجب أن أدخل الدولة التي ينتمي إليها و هي معلومة مصدرها جدول الدول معرفة بمفتاح ثانوي في جدول الموظفين كيف أظهر أسماء الدول و ليس أرقامها في فورم الموظفين

و شكرا لك سيدي الكريم

تحياتي

#4

اهلا وسهلا بك في هذا المنتدى الرائع ........

هذاه اول رد لي في هذا المنتدى منذ ان اشتركت وارجو ان افيدك بها ولو القليل

ركز معي اخي العزيز odai_24630

حل مشكلتك يتطلب التلاعب بجمله SQL التي سوف تتكتبها في الفورم وهناك اختلاف اذا كنت تريد استعرض البيانات للموظف من الجداول او اذا كنت تريد اضافه بيانات جديده للموظف للجدول كل على حسب ماتريد

مثلا زي ما افترضت اذا كان لدينا جدولين جدول الموظفين وجدول الدول حيث يحتوي الجدول الموظفين emp على ثلاثه اعمده كالتالي :

رقم الموظف emp_number (مفتاح رئيسي)من نوع رقم

اسم الموظف emp_name من نوع نص

رقم الدوله country_number (مفتاح ثانوي )من نوع رقم موجود في جدول country

حيث ان جدول الدول country يحتوي على عمودين

هم رقم الدوله country_number مفتاح رئيسي

والعمود الاخر اسم الدوله country_nsme من نوع نص

اذا اردنا استعراض بيانات موجوده في جدول الموظفين emp

في الفروم حقنا بواسطه datagridview

حيث نقوم بعرض اسم الموظف ورقمه واسم الدوله بدلا من رقمها الموجود في الجدول

عن طريق جمله select

SELECT emp.emp_number, emp.emp_name, country.country_name FROM country ,emp where country.country_nu = emp.country_number;

وهذا الكود الذي قمت بكتابته في الحدث اللود في الفورم الموظفين

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim users_sqlstr As String = "SELECT emp.emp_number, emp.emp_name, country.country_name FROM country ,emp   where country.country_nu = emp.country_number;"
        Dim users_adapter As New OleDbDataAdapter(users_sqlstr, con)
        con.Open()
        users_adapter.Fill(dats, "country")
        con.Close()
        DataGridView1.DataSource = dats
        DataGridView1.DataMember = "country"

    End Sub

وهذا رابط المثال اللي قمت بكتابته يحتوي على فورم وقاعده بيانات

tast.rar

وشكرا لك على حسن الاستماع والمتابعه واي شي لم يتم توضيحه ارجو اخبري

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