PDA

View Full Version : اشکال در sp



mehdiDER_5
دوشنبه 01 مرداد 1386, 18:23 عصر
با سلام

من در برنامه ام سرچی را با sp نوشته ام که در آن کاربر با وارد کردن عدد مورد نظر در تکس باکس رکود مورد نظر را در دیتا گرید میبیند مشکل اینجاست که اگر بخواهیم عدد دیگری را سرچ کنیم ارور میدهد با اینکه من ds را clear میکنم پیغام ارور این است
procedure or function k_select has too many arguments specified
این ارور را در خط da.fill(ds,"kol") lمیدهد ضمنا زمانی که من کد select * from table را در داخل برنامه مینوشتم یک چنین مشکلی نداشتم

sp و برنامه

[set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[k_select]
(@ksh_d bigint )
AS
BEGIN
select * from kol where (ksh_d=@ksh_d)
return(0)
END


و برنامه

ds.Clear()
cmdselect.CommandText = "k_select"
cmdselect.CommandType = CommandType.StoredProcedure
cmdselect.Connection = sqlconnection1
cmdselect.Parameters.Add("@ksh_d", SqlDbType.BigInt).Value = TextBox1.Text.Trim
da.SelectCommand = cmdselect
da.Fill(ds, "kol")
DataGridView1.DataSource = ds.Tables("kol")
TextBox1.Text = ""

asilverisis
دوشنبه 01 مرداد 1386, 23:32 عصر
با سلام
احتمالا شما cmdselect رو به صورت عمومی تعریف کرده اید یا روی فرم گذاشته اید.
اگر کدتون رو به این صورت تغییر بدید نباید این مشکل پیش بیاد:


Dim cmdselect as New SqlCommand
cmdSelect.CommandText = "k_Select"
.
.
.


موفق باشید.

mehdiDER_5
سه شنبه 02 مرداد 1386, 17:46 عصر
با سلام و تشکر از شما دوست عزیز

من در ابتدا cmdselect را به این صورت تعریف کرده بودم
friend with events cmdselect as new sqlcommand و این کد را در داخل کلاس مثل تعریف کردن کلیه اجزا مثل da , ds , ....... تعریف کرده بودم و در موافقی که کد را در دا خل برنامه مینوشتم مشکلی نبود و لی با sp این ارور را میداد بعد که شما نوشته بودید که در داخل فرم تعریف نکنید من آمدم و cmdselect را در داخل همان رویدادی که sp را در داخل برنامه ام نوشتم تعریف کردم یعنی همان رویداد کلید دکمه برای جستجو فقط برای من این سوال پیش آمد که چرا وقتی در بیرون همان رویداد cmdselect را تعریف کردم با آن ارور مواجه شدم

با سپاس

__H2__
سه شنبه 02 مرداد 1386, 18:14 عصر
سلام
خصوصیت CommandType مربوط به شی Command را روی StoredProcedure تنظیم کرده اید؟؟؟؟؟

asilverisis
چهارشنبه 03 مرداد 1386, 01:17 صبح
سلام
مشکل ، مشکل شی گرایی است.
وقتی شما cmd رو توی فرم (عمومی) تعریف کنید ، یک شی دارید که وقتی اولین بار دکمه رو می زنید یه پارامتر بهش اضافه میشه، و دفعه بعدی باز هم یه پارامتر دیگه به لیست پارامترها اضافه می کنید :


cmdselect.parameters.Add(..)


حالا شما یک command دارید با 2 پارامتر (اون هم همنام) در حالی که sp شما یک پارامتر دارد.
ولی با تعریف توی رویداد دکمه و استفاده از New در واقع شی command قبلی رو از بین
بردید و یک شی جدید ایجاد می کنید.

سعی کنید مقداری در مورد مباحث شی گرایی مطالعه بیشتری کنید.
موفق و موید.