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

Stroeprocedure

مغلق
بدأه man_J في 31 أكتوبر 2007 · 4 رد · 540 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم ورحمة الله ، اواجهة مشكلة مع مشروعي واتمنى ان اجد حل في هذا المنتدى ، عندي procedure يستقبل متعدد من البراميتر بس عندما اضعه في loop يحدث exception

واليكم الكود :

foreach (ListItem li in ListBox1.Items)

{



para = cmmd.Parameters.Add("@Sch_Date_1", SqlDbType.SmallDateTime);

para.Value = DateTime.Parse(li.Text);

para = cmmd.Parameters.Add("@Emp_No_2", SqlDbType.Decimal);

para.Value = decimal.Parse(DropDownList3.SelectedValue);

para = cmmd.Parameters.Add("@Shift_No_3", SqlDbType.Decimal);

para.Value = decimal.Parse(SelectShift_no);

para = cmmd.Parameters.Add("@Sec_No_4", SqlDbType.Decimal);

para.Value = decimal.Parse(DropDownList2.SelectedValue);

para = cmmd.Parameters.Add("@Edited_By_5", SqlDbType.Decimal);

para.Value = decimal.Parse(Session["UserID"].ToString());

para = cmmd.Parameters.Add("@ID_Bool", SqlDbType.Int);

para.Direction = ParameterDirection.Output;

para = cmmd.Parameters["@ID_Bool"];

conn.Open();

cmmd.ExecuteNonQuery();

conn.Close();

}

error :

Procedure or function chech_Date1 has too many arguments specified.

ارجوا المساعدة في هذا الحل لانه غلبني كثير ....................

شكرا............................................

#3

اما ان تعمل

cmmd.Parameters.clear

كل بداية دورة

او

والافضل تعريف متغيرات para1 para2 ....

ثم عمل اضافة لهم

para1 = cmmd.Parameters.Add ...

para2 = cmmd.Parameters.Add...

وداخل foreach تعريف القيم فقط

para1.value= xxx

para2.value=yyyy

......

ثم عمل التنفيذ

cmmd.ExecuteNonQuery();

ايضا لا داعي لفتح الاتصال والاغلاق كل مرة بل يكفي قبل الدخول في الدورة والاغلاق عند الانتهاء

#4

سلام عملت مثل ما قلت ولكن ظهر error معي وهذا الكود :

 para = cmmd.Parameters.Add("@Sch_Date_1", SqlDbType.SmallDateTime);
			para = cmmd.Parameters.Add("@Emp_No_2", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@Shift_No_3", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@Sec_No_4", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@Edited_By_5", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@ID_Bool", SqlDbType.Int);

		/////////// para 2/////////////////////////////////////////
			para2 = cmmd2.Parameters.Add("@Sch_Date_1", SqlDbType.SmallDateTime);
			para2 = cmmd2.Parameters.Add("@Emp_No_2", SqlDbType.Decimal);
			para2 = cmmd2.Parameters.Add("@Shift_No_3", SqlDbType.Decimal);
			para2 = cmmd2.Parameters.Add("@Sec_No_4", SqlDbType.Decimal);
			para2 = cmmd2.Parameters.Add("@Edited_By_5", SqlDbType.Decimal);

			conn.Open();
			foreach (ListItem li in ListBox1.Items)
			{


				para.Value = DateTime.Parse(li.Text);

				para.Value = decimal.Parse(DropDownList3.SelectedValue);


				para.Value = decimal.Parse(SelectShift_no);


				para.Value = decimal.Parse(DropDownList2.SelectedValue);

				para.Value = decimal.Parse(Session["UserID"].ToString());


				para = cmmd.Parameters["@ID_Bool"];
				para.Direction = ParameterDirection.Output;
				cmmd.ExecuteNonQuery();

			   // para = null;	   

				if (Int32.Parse(para.Value.ToString()) == 1)
				{
					Label3.Text += "Error, The Date is " + li.Text + " duplicate u must change";
					continue;
				}
				else if (Int32.Parse(para.Value.ToString()) == 0)
				{

					para2.Value = DateTime.Parse(li.Text);


					para2.Value = decimal.Parse(DropDownList3.SelectedValue);


					para2.Value = decimal.Parse(SelectShift_no);//SelectShift_no


					para2.Value = decimal.Parse(DropDownList2.SelectedValue);


					para2.Value = decimal.Parse(Session["UserID"].ToString());

					cmmd2.ExecuteNonQuery();

				   // para2 = null;
				}
				else
					continue;


			}
			conn.Close();

وهذا ال error :

Procedure 'chech_Date1' expects parameter '@Sch_Date_1', which was not supplied.

وشكراااااااااااا

#5

المشكلة هي في هذا الجزء

para = cmmd.Parameters.Add("@Sch_Date_1", SqlDbType.SmallDateTime);
			para = cmmd.Parameters.Add("@Emp_No_2", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@Shift_No_3", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@Sec_No_4", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@Edited_By_5", SqlDbType.Decimal);
			para = cmmd.Parameters.Add("@ID_Bool", SqlDbType.Int);

و هذا الجزء

para2 = cmmd2.Parameters.Add("@Sch_Date_1", SqlDbType.SmallDateTime);
			para2 = cmmd2.Parameters.Add("@Emp_No_2", SqlDbType.Decimal);
			para2 = cmmd2.Parameters.Add("@Shift_No_3", SqlDbType.Decimal);
			para2 = cmmd2.Parameters.Add("@Sec_No_4", SqlDbType.Decimal);
			para2 = cmmd2.Parameters.Add("@Edited_By_5", SqlDbType.Decimal);

أنت تقوم بتعيين أكثر من بارامتر على نفس المتغير مما يعني أن المتغير في النهاية لا يحوي سوى على آخر بارامتر و البرامترات الأخرى لا يتم إضافة قيمة إليها. بدلاً من تعيين كل بارامتر لمتغير يكفي أن تقوم بتعريف البارامتر:

cmmd2.Parameters.Add("@Emp_No_2", SqlDbType.Decimal);

ثم تعيين قيمة إليه هكذا:

cmmd.Parameters("@Emp_No_2").Value=decimal.Parse(DropDownList3.SelectedValue);

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