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

كود معرفة جميع قيم حقل مثلا ( دورات الكمبيوتر) بواسطة حقل اخر ( اسم الطالب )

مغلق
بدأه بعيد النظر في 20 يناير 2007 · 5 رد · 1,105 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي جدول 1 وفية ثلاثة حقول وجدول 2 وفية حقلين علما بأن الجدولين مرتبطين بعلاقة في حقل ( الدورات )

جدول 1

1- اسم الطالب / علي

2- رقم الطالب/ 1234

3- دورات الكمبيوتر / انترنت

و علي له عدة سجلات بنفس المعلومات ما عدا الدروات مختلفة مثلا برمجة .........الخ

جدول 2

1- ترقيم تلقائي

2- دورات الكمبيوتر

ما اريد ( استحملوني شوي )

واحد / معرفة جميع دورات علي اللي اخذها و تعبتها في لستى بوكس1 ( من جدول 1)

ثانيا / معرفة الدورات اللي ما اخذها علي و تعبئتها في لستى بوكس 2 ( من جدول 2)

وصل الله على سيدنا محمد

تم تعديل هذه المشاركة بواسطة بعيد النظر في 20 يناير 2007 في 04:55

#2

مشاء الله 30 شخص دخل الموضوع ولا احد عارف ولو معلومة بسيطة

يالله يا رب انك تسهلها من عندك

#3

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

-------------------

أخي الكريم عليك أن تبدأ أنت بذلك وين ما تصير عندك مشكلة خبرنا وحنا ما نبخل على الناس الطيبة ....

والسلام خير ختام ..

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#4

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

اللهم صلي وسلم على سيدنا محمد

أخي هل انت شغال .Net 2005 ؟

حاليا انا في دورة وتعلمت طريقة حلوه

ممكن تكتب stored procedure فيها جملة select

مثلا

select courses from table1

where student_num = 1234

وننادي الSP ونعبي الlist box فيها في حال اخترنا رقم طالب معين

#5

يعلم الله يا اخوان اني ما كتبت هالسؤال الا للفائدة لي ولمن يريد لأن الفائدة ليس ملكا لي أحد( في حد رائي الشخصي) وإن شاء الله كلنا نستفيد من اسألتنا من اخطائنا من كل

شيء نسوية في هالمنتدى الكبير اللي اتاح لنا فرصة ان نتطور بشكل سريع ( نشكر كل القائمين علية ) وها انا اطرح الحل الأول للي اريدة

لعل يأتي احد ويستفيد مثلي .. .....

شكرا اخي (Eng.Tivoli) حاولت ولكن لم يتم ذلك

وكن توصلت الى هذا الكود

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		Cn.Open()
		Dim adp As New OleDb.OleDbDataAdapter("select * from specialisation", Cn)
		Dim dr As DataRow
		Dim dt As DataTable
		Dim ds As New DataSet
		Dim a(20) As String
		Dim i As Int16
		Dim j As Int16
		Dim cnt As Int16
		adp.Fill(ds)
		dt = ds.Tables(0)
		i = 0
		cnt = 0
		For Each dr In dt.Rows

			a(i) = dr("specialisation")
			i = i + 1

		Next

		'ComboBox1.Items.Add((a(0)))
		Dim xx As String
		For i = 0 To 20
			If (a(i) = "") Then Exit Sub
			xx = a(i)
			cnt = 0
			If a(i + 1) = "" Then
				' ComboBox1.Items.Add(xx)
				Exit Sub
			End If

			For j = i + 1 To 20


				If (a(j) = a(i)) Then


					cnt = cnt + 1

				End If
				'
			Next
			If cnt > 0 And xx <> "" Then


				ComboBox1.Items.Add(xx)

			End If
		Next

		Cn.Close()
		' aaaaa()
	End Sub

طبعا هذا الكود يعبي الكمبو بوكس بقائمة التخصصات ( الدورات ) اللي كنت اقصدها في البداية ( يعني ... شبكات برمجيات )

ولكن تابع لما اريد عند الضعط على اي تخصص ( تعبئة المواد على حسب التخصص في لستة بوكس ) يعني ( برمجة فجوال بيسك .... شبكات 1)

و ( فلسطيننا ) ( يالله هذا ما وصلنا له اكمل المسيرة )

يالله يا رب انك تسهلها من عندك

#6

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

بداية اسمح لي يا أخي أن أخبرك بأن جداولك السابقة تحتاج إلى ترتيب أكثر

بداية أعتقد أنك قد ربطت الجدولين عن طريق حقل 'دورات الكومبيوتر'

إسأل نفسك السؤال التالي:

لو أحذت قيمة من حقل دورات الكومبيوتر من الجدول الثاني ورحت فيها إلى الجدول الأول ماذا سوف تفيدك هذه المعلومة؟؟؟؟

سوف تتيح لك معرفة أسماء كل الأشخاص الذين أخذوا هذه الدورة

ولو أخذت رقم الطالب من الجدول الأول ورحت فيها إلى الجدول الثاني (وهذا أنت ما تريد أن تعرف عن هذا الطالب ما هي الدورات التي أخذها) فلن تستفيد شيئأ على الإطلاق...!!!!

إذا فالحل هو تصميم جداول غير هذه الجداول وأن أقترح أن تكون على النحو التالي:

الجدول الأول: وليكن إسمه 'جدول الطلاب'

حقوله هي: رقم الطالب -ترقيم تلقائي من نوع int- وهو مفتاح أساسي Primary Key

إسم الطالب- وليكن من نوع nvarchar(20) مثلا

الجدول الثاني: وليكن إسمه 'جدول الدورات'

حقوله هي: رقم الدورة -ترقيم تلقائي من نوع int- وهو مفتاح أساسي Primary Key

إسم الدورة -وليكن من نوع nvarchar(15)-

الأفضل عند إنشاء الجداول أن تستعمل اللغة الانجليزية لأسماء الحقول:

فيصبح الجدول الأول اسمه tblStudents

حقوله: StudentID -كلمة واحدة-

StudentName -كلمة واحدة دائما أسماء الحقول لا تحوي فراغات-

الجدول الثاني: اسمه: tblCourses

حقوله: CourseID

CourseName

والآن لم ننتهي بعد لاحظ انه عليك أن تكون معلومات كل جدول مستقلة عن الآخر فلا أنشئ جدول واحد يضم كافة الحقول السابقة بدل الجدولين وهكذا....

إلى الآن لا نستطيع الحصول على معلومة مم تريد أنت فما الحل؟؟؟؟

الحل: هو إنشاء جدول يربط بين الجدولين السابقين

إذا فالجدول الثالث هو: جدول يحتوي على الحقول التالية:

رقم الطالب -من نوع int مثل نوعه الأساسي في جدول الطلاب -انتبه لا تضع هذا الحقل من النمط الترقيم التلقائي لأن قيمته سيأخذها من جدول الطلاب

وهو مفتاح غريب Foreign Key تربطه مع الحفل رقم الطالب من جدول الطلاب

رقم الدورة -من نوع int مثل نوعه الأساسي في جدول الدورات -انتبه لا تضع هذا الحقل من النمط الترقيم التلقائي لأن قيمته سيأخذها من جدول الدورات

و هو مفتاح غريب Foreign Key تربطه مع الحقل رقم الدورة من جدول الدورات

ملاحظة كلا الحقلين السابقين هما مفتاح أساسي واحد

نكتب الجدول الثالث باللغة النجليزية: اسمه: tblCoursesStudents

أسماء حقوله: StudentID

CourseID

والآن للحصول على جميع أسماء الطلاب والمواد التي يأخذونها نكتب:

select tblCourses.CourseName, tblStudents.StudentName
from tblStudents
inner join tblCoursesStudents
on tblStudents.StudentID = tblCoursesStudents.StudentID
inner join tblCourses
on tblCourses.CourseID = tblCoursesStudents.CourseID

والآن لعرض الطالب علي مع دوراته على افتراض ان رقم الطالب علي في جدول الطلاب هو 1 نعدل التعليمة السابقة فتصبح:

select tblCourses.CourseName, tblStudents.StudentName
from tblStudents
inner join tblCoursesStudents
on tblStudents.StudentID = tblCoursesStudents.StudentID and tblStudents.StudentID = 1
inner join tblCourses
on tblCourses.CourseID = tblCoursesStudents.CourseID

وشكرا

تم تعديل هذه المشاركة بواسطة عبد الكريم في 5 فبراير 2007 في 14:03

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

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

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

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

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

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