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

رسالة خطاء عند استدعاء Stored Procedure

بدأه sunbol في 20 أبريل 2009 · 3 رد · 574 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني الكرام

عندي stored PROCEDURE موجود في الداتا بيس

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

No overload for method 'sp_Categories_AddEdit' takes '6' arguments

الكود هو التالي:

  protected void btnSave_Click(object sender, EventArgs e)
	{
		try
		{
			if (this.Session[PublicOperations.Session_Site_IsArabic] != null)
			{
				string target = Request.QueryString["Target"] == null ? "" : Request.QueryString["Target"];
				target = target.ToLower();

				bool isArabic = Convert.ToBoolean(this.Session[PublicOperations.Session_Site_IsArabic].ToString());
				 string sec;
				if (RadioButton1.Checked = true)
					sec = "game";
				else
					if (RadioButton2.Checked = true)
						sec = "kinde";

				DBOperations db = new DBOperations();
				if (target == "addcategory") // Add Group With Image ---------------------------
				{
					Guid ID = Guid.NewGuid();
					db.sp_Categories_AddEdit(ID, this.txtCategoryName.Text, this.txtBreifImages.Text, this.FreeTextBox1.Text, isArabic, sec);
				}
				else if (target == "editcategory")
				{
					Guid QueryStringCategoryID = new Guid(Request.QueryString[Task_UniqueID]);

					db.sp_Categories_AddEdit(QueryStringCategoryID, this.txtCategoryName.Text, this.txtBreifImages.Text, this.FreeTextBox1.Text, isArabic, sec);
				}
				if (this.ViewState["Action"] != null)
				{
					if (this.ViewState["Action"].ToString() == "AddNew")
					{
						Response.Redirect("Default.aspx?Target=AddCategory");
					}
					else
					{
						Response.Redirect("Default.aspx?Target=ListCategories");
					}
				}
				else
				{
					Response.Redirect("Default.aspx?Target=ListCategories");
				}
			}
			else
			{
				PublicOperations.RedirectToLogin(this.Request, this.Response);
			}
		}
		catch (Exception r)
		{
			this.lblErrorMessage.Text = r.Message;;
		}
	}

ملاحظه بسيط الكود كان يعمل بشكل جيد ولكن قمت فقط باضافة حقل في في الجدول وفي الsored PROCEDURE

وفي الكود

وبعد الاضافة اتى الخطاء السابق

36cm7.gif
#2

الخطا واضح أنت تمرر 6 محددات للوظيفة المخزنة والرسالة تقول لك أن الوظيفة المخزنة لا تأخذ 6 محددات راجع تعريف الوظيفة المخزنة في قاعدة البيانات

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

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

شكرا اخي الكريم

صحيح الخطاء واضح ولكن انا قمت بالتعديل على الوظيفة المخزنة والكود بعد التعديل هو التالي

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go





ALTER PROCEDURE [dbo].[sp_Categories_AddEdit]

	(
		@fld_CategoryID		uniqueidentifier,
		@fld_CategoryName	nvarchar(150),
		@fld_BreifImages	nvarchar(250),
		@fld_CategoryDesc	ntext,
		@fld_IsArabic		bit,
		@fid_Section		nvarchar(50)
	)

AS
	DECLARE @fld_Order int


	SELECT @fld_Order=ISNULL(MAX(fld_Order),0)+1 FROM tbl_Categories WHERE fld_IsArabic=@fld_IsArabic



IF NOT EXISTS(SELECT * FROM tbl_Categories WHERE fld_CategoryID = @fld_CategoryID)
	BEGIN
INSERT INTO tbl_Categories
				(
					fld_CategoryID,
					fld_CategoryName,
					fld_BreifImages,
					fld_CategoryDesc,
					fld_IsArabic,
					fld_Order,
					fid_Section
				)
				VALUES
				(
					@fld_CategoryID,
					@fld_CategoryName,
					@fld_BreifImages,
					@fld_CategoryDesc,
					@fld_IsArabic,
					@fld_Order,
					@fid_Section
				)
END
ELSE
	BEGIN
		UPDATE tbl_Categories
			SET
				fld_CategoryName = @fld_CategoryName,
				fld_BreifImages	 = @fld_BreifImages,
				fld_CategoryDesc = @fld_CategoryDesc,
				fld_IsArabic	 = @fld_IsArabic,
				fid_Section	  = @fid_Section
		WHERE	fld_CategoryID	 = @fld_CategoryID
	END

كما تلاحظ هناك 6 براميتر قد تم تمريرها

بينما الكود الاصلي الذي كان يعمل بطريقة صحيحه هو التالي

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go




ALTER PROCEDURE [dbo].[sp_Categories_AddEdit2]

	(
		@fld_CategoryID		uniqueidentifier,
		@fld_CategoryName	nvarchar(150),
		@fld_BreifImages	nvarchar(250),
		@fld_CategoryDesc	ntext,
		@fld_IsArabic		bit
	)

AS
	DECLARE @fld_Order int


	SELECT @fld_Order=ISNULL(MAX(fld_Order),0)+1 FROM tbl_Categories WHERE fld_IsArabic=@fld_IsArabic



IF NOT EXISTS(SELECT * FROM tbl_Categories WHERE fld_CategoryID = @fld_CategoryID)
	BEGIN
INSERT INTO tbl_Categories
				(
					fld_CategoryID,
					fld_CategoryName,
					fld_BreifImages,
					fld_CategoryDesc,
					fld_IsArabic,
					fld_Order
				)
				VALUES
				(
					@fld_CategoryID,
					@fld_CategoryName,
					@fld_BreifImages,
					@fld_CategoryDesc,
					@fld_IsArabic,
					@fld_Order
				)
END
ELSE
	BEGIN
		UPDATE tbl_Categories
			SET
				fld_CategoryName = @fld_CategoryName,
				fld_BreifImages	 = @fld_BreifImages,
				fld_CategoryDesc = @fld_CategoryDesc,
				fld_IsArabic	 = @fld_IsArabic
		WHERE	fld_CategoryID	 = @fld_CategoryID
	END

فقط قمت باضافة حقل واحد الى الجدول الاصلي وهو fid_Section

وقمت بالتعديل على الاجراء المخزن

36cm7.gif
#4

لا ادري بالضبط

تأكد من ان امر تعديل الوظيفة المخزنة قد تم تنفيذه بصورة صحيحة على قاعدة البيانات

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

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 25 أبريل 2009 في 17:47

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

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