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

مشكله مع ال Return Stured Procedure

مغلق
بدأه Fraas.NET في 30 نوفمبر 2002 · 1 رد · 598 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام و عليكم ورحمة الله و بركاته .. وخواتم مباركة إن شاء الله ...

لوسمحتم يا شباب عندي سؤال مستعجل جدا :D:D

أانا عندي جدول الـ SQL Server و هذا هو التركيب تبعه

CREATE TABLE tblSubjects
 (
	[SubjectNo] [int] IDENTITY (1, 1) NOT NULL ,
	[SubjectName] [varchar] (200)   NOT NULL ,
	[Note] [varchar] (8000) NULL 
)

و كذا قمت بعمل Stored Procedure و هذا التركيب تبعه بس مش متأكد من صحته :(:(

CREATE PROCEDURE sp_AddSubject
	@SubjectNo int,
	@SubjectName varchar(200),
	@Note varchar(8000)
 AS
INSERT INTO tblSubjects (SubjectName,Note)
VALUES (@SubjectName,@Note)

set @SubjectNo = (Select Max(SubjectNo) From  tblSubjects)
GO

و الذي أريده يا شباب من خلال برنامج صغير في الـ #C أن أدخل الـ SubjectName و Note

و بعد ذلك أي بعد ما يتم الإدخل بشكل صحيح من خلال الـ Stored Procedure تظهر لي MessageBox فيها قيمة الـ SubjectNo

و هذا هو الكود الذي أنا كتبيه في الـ #C بس هو مش صحيح 100 % يعني يا شباب لو تكرمتم أريد الآنامل الذهبيه لوسمحتم أن تضفي عليه بعض التغيرات من أجل أن يعمل :(:(

Connection();
this.sqlDataAdapter1.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure; 
this.sqlDataAdapter1.SelectCommand.CommandText = "sp_AddSubject";

SqlParameter ParSubjectNo = new SqlParameter("@SubjectNo",SqlDbType.Int);
ParSubjectNo.Direction = ParameterDirection.ReturnValue;

SqlParameter ParSubject = new SqlParameter("@SubjectName",SqlDbType.VarChar,200);
ParSubject.Direction = ParameterDirection.Input;
ParSubject.Value = frm.txtSubject.Text;

SqlParameter ParNote = new SqlParameter("@Note",SqlDbType.VarChar,8000);
ParNote.Direction = ParameterDirection.Input;
ParNote.Value = frm.txtNote.Text;


this.sqlDataAdapter1.SelectCommand.Parameters.Add(ParSubject);
this.sqlDataAdapter1.SelectCommand.Parameters.Add(ParNote);

this.sqlDataAdapter1.SelectCommand.Connection.Open();
this.sqlDataAdapter1.SelectCommand.ExecuteNonQuery();

System.Windows.Forms.MessageBox.Show(ParSubjectNo.Value.ToString());

this.sqlDataAdapter1.SelectCommand.Connection.Close();
this.sqlDataAdapter1.SelectCommand.Parameters.Clear();

لا تهتمو بالـ Connection فهو موجود ضمن Function منفصله ... ملاحضه من خلال البرنامح ده عملية إدخل البيانات تجرى صحيحه 100 % لو بعدنا السطر

System.Windows.Forms.MessageBox.Show(ParSubjectNo.Value);

بس أنا أريد أن أعرف ما هو الـ SubjectNo بهذا الأسلوب

ولكم تحياتي وشكرا :):)

فراس

قم بزيارة موقعنا الخاص C# Lover ... الموقع الخاص بمحبي لغة الـ #C العرب

http://arab.csharplover.com

#2

الحل هنا بمساعدة الأخ مدين

هذا الـ Stored Procedure

CREATE PROCEDURE sp_AddSubject
	@SubjectNo int output,
	@SubjectName varchar(200),
	@Note varchar(8000)
 AS
INSERT INTO tblSubjects (SubjectName,Note)
VALUES (@SubjectName,@Note)

set @SubjectNo = (Select Max(SubjectNo) from tblSubjects)
أو يمكنا كتابة التالي بدلا من السطر السابق
set  @SubjectNo = @@identity
GO

هذا بالنسبه للبرنامج في الـ #C

Connection();
this.sqlDataAdapter1.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure; 
this.sqlDataAdapter1.SelectCommand.CommandText = "sp_AddSubject";

SqlParameter ParSubjectNo = new SqlParameter("@SubjectNo",SqlDbType.Int);
ParSubjectNo.Direction = ParameterDirection.Output;

SqlParameter ParSubject = new SqlParameter("@SubjectName",SqlDbType.VarChar,200);
ParSubject.Direction = ParameterDirection.Input;
ParSubject.Value = frm.txtSubject.Text;

SqlParameter ParNote = new SqlParameter("@Note",SqlDbType.VarChar,8000);
ParNote.Direction = ParameterDirection.Input;
ParNote.Value = frm.txtNote.Text;

this.sqlDataAdapter1.SelectCommand.Parameters.Add(ParSubjectNo);                
this.sqlDataAdapter1.SelectCommand.Parameters.Add(ParSubject);
this.sqlDataAdapter1.SelectCommand.Parameters.Add(ParNote);

this.sqlDataAdapter1.SelectCommand.Connection.Open();
this.sqlDataAdapter1.SelectCommand.ExecuteNonQuery();

System.Windows.Forms.MessageBox.Show(ParSubjectNo.Value.ToString());

this.sqlDataAdapter1.SelectCommand.Connection.Close();
this.sqlDataAdapter1.SelectCommand.Parameters.Clear();

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

وشكرا :):)

قم بزيارة موقعنا الخاص C# Lover ... الموقع الخاص بمحبي لغة الـ #C العرب

http://arab.csharplover.com

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

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