PDA

View Full Version : سوال: مشکل در اپدیت و حذف کردن رکورد و نمایش خطای(Procedure or function update_daneshjoo has too many arg)



systam
جمعه 08 اسفند 1393, 18:40 عصر
سلام
من قبلا به صورت معمولی برای ویرایش و حذف رکورد از بانک بدون استفاده از پروسجر ها اقدام میکردم بدون هیچ مشکلی این کار انجام میشد
الان من از پروسجر ها استفاده میکنم برنامه برای بار اول کارو انجام میده ولی بار دوم که میخوام این کارو انجام بدم خطا میگیره
128927
اینم نمونه استفاده شد پروسجر
128928
و اینم کد استفاده شده


con.Close(); com.Dispose();
com.Connection = con;
com.CommandType = CommandType.StoredProcedure;
com.CommandText = "update_daneshjoo";
int int_number = DataGridView1.CurrentRow.Cells(0).Value;
com.Parameters.AddWithValue("@id", int_number);
com.Parameters.AddWithValue("@name", txt_name.Text.Trim());
com.Parameters.AddWithValue("@family", txt_family.Text.Trim());
string str_reshteh = reshteh.SelectedItem.ToString();
com.Parameters.AddWithValue("@reshteh", str_reshteh);
int int_n = Convert.ToInt32(txt_nomreh.Text.Trim());
com.Parameters.AddWithValue("@nomreh", int_n);
MemoryStream ms = new MemoryStream();
pic.Image.Save(ms, pic.Image.RawFormat);
byte[] pic_binary = ms.GetBuffer();
com.Parameters.AddWithValue("@pic", pic_binary);
con.Open();
com.ExecuteNonQuery();
con.Close();
loadd();
MessageBox.Show("ok update");


دوستان ممنون میشم راهنماییم کنید

یا علی

ali_md110
شنبه 09 اسفند 1393, 23:29 عصر
شاید مشکل از فیلد name باشه که داره آبی نشون میده البته name جزو کلمات کلیدی نیست ولی اینجا داره رنگ آبی نشون میده!
یک BreackPoint روی


com.ExecuteNonQuery();

بزنید شاید ردیابی شد

این قسمت SelectedItem هم مشکوک هست


string str_reshteh = reshteh.SelectedItem.ToString();
com.Parameters.AddWithValue("@reshteh", str_reshteh);

plus
یک شنبه 10 اسفند 1393, 14:15 عصر
تعداد مقادیری که به عنوان پارامتر برای SP تعیین کردین بیشتر از تعداد آرگومان های خودش هست. اگه دفعه اول جواب میده و دفعه بعد جواب نمیده احتمالا مشکل از این هست که شما پارامترهای شی command‌‌‌‌‌‌‌ رو خالی نمیکنید و برای بار دوم همون پارامترها رو اضافه میکنید.


...
com.CommandText = "update_daneshjoo";
com.Parameters.Clear(); // <<<<<------------
...