PDA

View Full Version : جستجو توسط مقایسه یک پارامتر با جند فیلد



Parastoo7
یک شنبه 10 بهمن 1389, 14:57 عصر
سلام
من یک sp ساده نوشتم به این شکل :




ALTER Procedure [dbo].[sp_TbTest_SearchImgName]
@option varchar(500),

As
Begin
Select
count(*)
From TbTest
Where
[option1] LIKE @option OR [option] LIKE @option2 OR [option] LIKE @option3 OR [option] LIKE @option4
End
و در کد برنامه هم این کد را نوشتم



[DataObjectMethod(DataObjectMethodType.Select)]
public DataSet selectForDel(string option)
{
DbObject dbo = new DbObject();
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("option1",option),
new SqlParameter("option2",option),
new SqlParameter("option3",option),
new SqlParameter("option4",option)
};
return dbo.RunProcedure("sp_TbTest_SearchImgName", parameters, "TbTest");

}
اما زمان اجرا خطا سر تعداد پارامتر ها خطا می گیرد.

کسی دلیل و راه حلشو می دونه ؟

حمیدرضاصادقیان
یک شنبه 10 بهمن 1389, 22:58 عصر
سلام.
خوب کد شما اشتباه هست. شما در قسمت تعریف پارامتر در SP فقط یک پارامتر با نام Option داری بعد داخل SP اومدی از پارامترهای Option1,option2,..4 استفاده کردی.همه اینها باید در اون لیست پارامترها تعریف بشه.

Parastoo7
دوشنبه 11 بهمن 1389, 13:21 عصر
من فقط از پارامتر option استفاده کردم . اما این پارامتر را با 4 فیلد مقایسه کردم!
option 1 تا option 4 اسم فیلد هست نه پارامتر!

hossein_h62
دوشنبه 11 بهمن 1389, 14:07 عصر
کدتون رو بصورت زیر اصلاح کنید :

ALTER Procedure [dbo].[sp_TbTest_SearchImgName]
@option varchar(500),
As
Begin
Select
count(*)
From TbTest
Where
[option1] LIKE @option OR [option2] LIKE @option OR [option3] LIKE @option OR [option4] LIKE @option
End

حمیدرضاصادقیان
دوشنبه 11 بهمن 1389, 19:48 عصر
سلام.

من فقط از پارامتر option استفاده کردم . اما این پارامتر را با 4 فیلد مقایسه کردم!
option 1 تا option 4 اسم فیلد هست نه پارامتر!
دوست عزیز منم میدونم میخواستید چیکار کنید ولی کدتون رو اشتباه نوشتید.
کد پست 4 همون کاری که شما میخواهید رو انجام میده ولی کاملا با کد شما متفاوته.

پاورقی: بیشتر در استفاده از ! دقت کنید...

Parastoo7
سه شنبه 12 بهمن 1389, 11:24 صبح
من کدی که در نوشتم دقیقه همون کد پست 4 هست ، اما چون در برنامه خطا داده بود با 4 پارامتر تعریف کردم که اینجا این قسمتو فراموش کردم اصلاح کنم.
همین کد رو دوباره هم تست کردم باز هم همون خطا را داره. sp خطایی نداره اما زمان اجرای برنامه خطا می گیره.
اینم متن خطا:

Procedure or function sp_TbTest_SearchImgName has too many arguments specified.

m_omrani
سه شنبه 12 بهمن 1389, 19:20 عصر
شما در برنامه C# دارید SP رو با چهار پارامتر Call می کنید، در حالی که یک پارامتر به نام Option بیشتر نداره.