Ebrahim_Rayaneh
دوشنبه 21 اسفند 1391, 03:42 صبح
قطعه کد زیر رو مشاهده کنید:
for (int i = 0; i < dgvComodity.Rows.Count; i++)
{
Cmm.CommandText = "update tbl_Stockroom set CommoName='@CommoName'"+i.ToString()+
", NumShop='@NumShop'" + i.ToString() + ", PriceShop='@PriceShop'" + i.ToString() +
", DateShop='@DateShop'"+i.ToString()+" where IDS='@IDS'" + i.ToString();
Cmm.Parameters.AddWithValue("@CommoName" + i.ToString(), dgvComodity.Rows[i].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop" + i.ToString(), dgvComodity.Rows[i].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop" + i.ToString(), dgvComodity.Rows[i].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop" + i.ToString(), DT.Rows[i]["DateShop"]);
Cmm.Parameters.AddWithValue("@IDS" + i.ToString(), DT.Rows[i]["IDS"]);
Cmm.ExecuteNonQuery();
}
در کد فوق میخوام از محتوای دیتاگریدویو (dgvComodity)و دیتاتیبل (DT)که از قبل آماده کردم،استفاده کنم برای اجرا کردن یک دستور update ساده! دلیل استفاده از حلقه ی for اینه که ممکنه چندین سطر در دیتاگریدویو وجود داشته باشه اما برنامه خطای زیر رو میده:
Incorrect syntax near '0'.
اگرم حلقه for رو ور دارم به صورت زیر درمیاد:
Cmm.CommandText = "update tbl_Stockroom set CommoName='@CommoName'"+
", NumShop='@NumShop', PriceShop='@PriceShop'"+
", DateShop='@DateShop' where IDS='@IDS'";
Cmm.Parameters.AddWithValue("@CommoName", dgvComodity.Rows[0].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop", dgvComodity.Rows[0].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop", dgvComodity.Rows[0].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop", DT.Rows[0]["DateShop"]);
Cmm.Parameters.Add("@IDS", SqlDbType.Int).Value = (int)DT.Rows[0]["IDS"];
Cmm.ExecuteNonQuery();
اما در اینصورت هم این خطا رو میده:
Conversion failed when converting the varchar value '@IDS' to data type int.
اگه امکانش هست دلیل هر دو رو توضیح بدید ممنونتون میشم.البته در مورد دومی معلومه که به تبدیل نوع داره گیر میده اما با اینکه تبدیلش میکنم (int)DT.Rows[0]["IDS"] اشکال میگیره.
for (int i = 0; i < dgvComodity.Rows.Count; i++)
{
Cmm.CommandText = "update tbl_Stockroom set CommoName='@CommoName'"+i.ToString()+
", NumShop='@NumShop'" + i.ToString() + ", PriceShop='@PriceShop'" + i.ToString() +
", DateShop='@DateShop'"+i.ToString()+" where IDS='@IDS'" + i.ToString();
Cmm.Parameters.AddWithValue("@CommoName" + i.ToString(), dgvComodity.Rows[i].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop" + i.ToString(), dgvComodity.Rows[i].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop" + i.ToString(), dgvComodity.Rows[i].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop" + i.ToString(), DT.Rows[i]["DateShop"]);
Cmm.Parameters.AddWithValue("@IDS" + i.ToString(), DT.Rows[i]["IDS"]);
Cmm.ExecuteNonQuery();
}
در کد فوق میخوام از محتوای دیتاگریدویو (dgvComodity)و دیتاتیبل (DT)که از قبل آماده کردم،استفاده کنم برای اجرا کردن یک دستور update ساده! دلیل استفاده از حلقه ی for اینه که ممکنه چندین سطر در دیتاگریدویو وجود داشته باشه اما برنامه خطای زیر رو میده:
Incorrect syntax near '0'.
اگرم حلقه for رو ور دارم به صورت زیر درمیاد:
Cmm.CommandText = "update tbl_Stockroom set CommoName='@CommoName'"+
", NumShop='@NumShop', PriceShop='@PriceShop'"+
", DateShop='@DateShop' where IDS='@IDS'";
Cmm.Parameters.AddWithValue("@CommoName", dgvComodity.Rows[0].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop", dgvComodity.Rows[0].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop", dgvComodity.Rows[0].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop", DT.Rows[0]["DateShop"]);
Cmm.Parameters.Add("@IDS", SqlDbType.Int).Value = (int)DT.Rows[0]["IDS"];
Cmm.ExecuteNonQuery();
اما در اینصورت هم این خطا رو میده:
Conversion failed when converting the varchar value '@IDS' to data type int.
اگه امکانش هست دلیل هر دو رو توضیح بدید ممنونتون میشم.البته در مورد دومی معلومه که به تبدیل نوع داره گیر میده اما با اینکه تبدیلش میکنم (int)DT.Rows[0]["IDS"] اشکال میگیره.