dena كتب :لم أفهم المقصود بعبارة output الموجودة في السطر التالي
cmd.CommandText = "INSERT INTO classes (classname) OUTPUT(Inserted.classno) VALUES (@classname)"
cmd.Parameters.AddWithValue("@classname", TextBox1.Text)
output نسند لها بعد inseted اسم الحقل المراد جلب الآيدي له ، بمعنى عند اضافة السجل ارجع برقم الآيدي التابع للسجل نفسه .
أيضاً يمكن عمل المطلوب بطريقة أخرى ،،،،،،، بإجراء مخزن واحد كالتالي :
كود :
create PROCEDURE savetwotables
@classname nvarchar(50),
@classno int,
@section nvarchar(50)
AS
Begin
Set Nocount On
DECLARE @ssid int
INSERT INTO classes(classname) VALUES (@classname)
SELECT @ssid=SCOPE_IDENTITY()
INSERT INTO sections(classno, section) VALUES (@ssid, @section)
Endنعمل باراميترات باسماء الحقول المراد التعامل معها
@classname = اسم الحقل من جدول الفصول المراد اضافة فيه اسم الفصل .
@classno = اسم الحقل في جدول الشعب المراد اضافة فيه رقم الفصل .
@section = اسم الحقل من جدول الشعب المراد اضافة فيه اسم الشعبة .
لاحظي DECLARE @ssid int
الباراميتير @ssid هو الذي يحمل رقم الآيدي ليتم ادخالة في جدول الشعب في حقل رقم الفصل .
اسم جدول الفصول = classes
حقول جدول الفصول = (classno int) ترقيم تلقائي
classname nvarchar (50)) نص
اسم جدول الشعب = sections
حقول جدول الشعب = (secid int) ترقيم تلقائي
classno int) = رقم
section = nvarchar(50) = اسم الشعبة
الكود يكون كالتالي :
كود :
Dim cmd As New SqlCommand("savetwotables", conn)
cmd.CommandType = CommandType.StoredProcedure
conn.Open()
cmd.Parameters.AddWithValue("@classname", t1.Text)
cmd.Parameters.AddWithValue("@classno", "")
cmd.Parameters.AddWithValue("@section", t2.Text)
cmd.ExecuteNonQuery()
conn.Close()t1 = تكست المراد ادخال اسم الفصل فيه .
t2 = تكست المراد ادخال اسم الشعبة فيه .
بالتوفيق

