مرحبا مره أخرى ،،،،
الأخ محمد ماقصر الله يجزاه خير ،،، ولكن لي ملاحظتين :
# الملاحظة الأولى : الأخ محمد عمل ثلاث عمليات العملية الأولى : (ادخال اسم الفصل في جدول الفصول) العملية الثانية (ادخال رقم الآيدي للفصل في جدول الشعب) العملية الثالثة (تعديل على جدول الشعب بموجب شرط آخر رقم للآيدي واضافة اسم الشعبة)
بينما هي عمليتين بالأصل (ادخال اسم الفصل في جدول الفصول) و (ادخال رقم الآيدي للفصل واسم الشعبة في جدول الشعب) فقط
# الملاحظة الثانية : والتي اعتبرها مشكلة ان لم تنتبهو لها وشرح المشكلة كالتالي :
ماتفضل به اخي محمد : انه ادخل اسم الفصل ثم جلب آخر رقم للأيدي من جدول الفصل وقام ادخل في جدول الشعب .... هنا المشكلة
لنفرض يوجد في سجل الفصول سجل واحد فقط ،،، بإسم الفصل الأول . والآيدي التابع له رقم 1 .
وقمت انا ادخال اسم الفصل الثاني حيكون الآيدي التابع له رقم 2 .
لنفرض موظف آخر قام بإدخال سجل في نفس الوقت في الجدول . سيكون الآيدي التابع له رقم 3 .
عند تنفيذ الجملة المطروحه من أخي محمد سيجلب آخر رقم للآيدي من الجدول وهنا يكون رقم 3 .... هنا الخطأ .
الحل يكون كالتالي : عند اضافة سجل نجلب الآيدي للسجل نفسه بجملة واحده مع عملية الإدخال :
لاحظو الحل يتكون أولاً من عمليتين وليس ثلاث ، أيضاً رقم الآيدي يكون مخصوص لرقم السجل المضاف وليس آخر سجل اضيف .
كود :
Dim cmd As New SqlCommand
cmd.Connection = conn
conn.Open()
cmd.CommandText = "INSERT INTO classes (classname) OUTPUT(Inserted.classno) VALUES (@classname)"
cmd.Parameters.AddWithValue("@classname", TextBox1.Text)
Dim sid As Integer = cmd.ExecuteScalar 'المسؤول عن ادخال البيانات وجلب رقم الآيدي في المتغير
cmd.Dispose()
Dim cmd2 As New SqlCommand
cmd2.Connection = conn
cmd2.CommandText = "INSERT INTO sections (classno,section) VALUES (@classno,@section)"
cmd2.Parameters.AddWithValue("@classno", sid)
cmd2.Parameters.AddWithValue("@section", TextBox2.Text)
cmd2.ExecuteNonQuery()
cmd2.Dispose()
conn.Close()
المثال في المرفقات اي غموض انا موجود / بالتوفيق