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

س : ملء Combobox من جدولين بينهما علاقة

بدأه الكتاح في 11 ديسمبر 2008 · 9 رد · 1,094 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الإخوة الأكارم / السّلام عليكم و رحمة الله

كل عام و أنتم بخير - أسأل الله أن يعيدنا لنا العيد و الأمة الإسلاميّة بخير و ترابط و تعاضدد

سؤالي هو :

لديّ جدولين في قاعدة البيانات :

الجدول الأول : جدول الطلاب و يحتوي على : اسم الطالب ، رقمه الجامعي ، الكليّة ، السنة ، ... و كافّة البيانات الأخرى

الجدول الثّاني يحتوي على : رقم الطالب و تخرّج الطالب (نعم / لا)

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

كيف أملأ combobox بأسماء الطلاب المتخرّجين (لاحظ أن اسم الطالب يوجد فقط في الجدول الأول)

جزاكم الله خيراً ..

#2

السلام عليكم

أصل الكود هو عمل فيو View في قاعدة البيانات من الكود التالي:

SELECT	 dbo.tbl1.tname
FROM		 dbo.tbl1 INNER JOIN
					  dbo.tbl2 ON dbo.tbl1.tID = dbo.tbl2.tID
WHERE	 (dbo.tbl2.ttahrej = 1)

بقي تطييقها يمكن أن يكون كالتالي:

		Dim ReadCom As New SqlClient.SqlCommand
		ReadCom.CommandTimeout = 0
		ReadCom.CommandText = "SELECT dbo.tbl1.tname FROM dbo.tbl1 INNER JOIN dbo.tbl2 ON dbo.tbl1.tID = dbo.tbl2.tID WHERE (dbo.tbl2.ttahrej = 1)"
		ReadCom.Connection = MyConnection
		Dim MyReader As SqlClient.SqlDataReader = ReadCom.ExecuteReader()
		Do While MyReader.Read
			ComboBox1.Items.Add(MyReader.GetValue(0).ToString)
		Loop
MyReader.Close()

يسر الله أمرك..

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

تم تعديل هذه المشاركة بواسطة sscvbnm في 11 ديسمبر 2008 في 13:55

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#3

جزاك الله خيراً يا أخي ..

فهمت من الحل أنّ استخدام جملة select في حالة جدولين مربوطين يكون كالآتي :-

select الحقل 1 ، الحقل 2 ، الحقل 3 ، ..... from الجدول 1 INNER JOIN الجدول 2 on الحقل المشترك من 1 = الحقل المشترك من 2 where الشّرط

جاري التجربة الآن ..

جزاك الله خيراً مرّة أخرى ..

#4

للأسف لم أوفق في تطبيق الكود ، أرجو التعديل علي محاولتي هذه :

WindowsApplication2.zip

#5

Private Sub ComboBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Click

' ان شاء الله يعمل الان

Dim ds As New DataSet

Dim sgl1 As String = "SELECT students.name " _

& "FROM " _

& "(faculties INNER JOIN students ON faculties.[f_name] = students.[faculty]) " _

& "INNER JOIN graduation ON students.[num] = graduation.[num] " _

& "where faculties.f_name='" & ComboBox1.Text & "' and graduation.graduate=true;"

Dim DataAdapter1 As New OleDbDataAdapter(sgl1, Conn)

DataAdapter1.Fill(ds, "students")

ListBox1.DataSource = ds.Tables("students")

ListBox1.DisplayMember = "name"

End Sub

تم تعديل هذه المشاركة بواسطة أم العبد في 12 ديسمبر 2008 في 12:05

#6
 Private Sub ComboBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Click
		' ان شاء الله يعمل الان
		Dim ds As New DataSet
		Dim sgl1 As String = "SELECT students.name " _
		& "FROM " _
		& "(faculties INNER JOIN students ON faculties.[f_name] = students.[faculty]) " _
		& "INNER JOIN graduation ON students.[num] = graduation.[num] " _
		& "where faculties.f_name='" & ComboBox1.Text & "' and graduation.graduate=true;"

		Dim DataAdapter1 As New OleDbDataAdapter(sgl1, Conn)
		DataAdapter1.Fill(ds, "students")
		ListBox1.DataSource = ds.Tables("students")
		ListBox1.DisplayMember = "name"
	End Sub
#7

جزاك الله خيراً أختي أم العبد .. جرّبت الكود و هو يعمل جيّداً

تقبل الله منكم هذا العمل الجليل .. و جعله في ميزان حسناتك

#8

وجزاك خيرا مثله ..

صحيح هناك اسامي للطلاب .. لكن اعتقد النتائج غير صحيحة ...

#9

نعم علمت اين تكمن المشكلة .. الكود وضع في ال event الخاطئ .. انقل الكود السابق من ComboBox1_Click الى ال ComboBox1_SelectedIndexChanged

لانه في الوضع السابق يظهر نتائج الطلاب الناجحين في الكلية السابق تغيرها .. وليس للتي تم اختيارها .. فاختيارك للحدث يجب ان يتم بعد تحديد الكلية واختيارها حتى تكون النتائج دقيقة ..

#10

بارك الله فيك .. و شكراً لمشاركاتك المتميّزة ..

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