farshadvl
شنبه 27 آبان 1391, 12:08 عصر
با سلام
من یک برنامه کوچک چند مدت پیش با sql server 2008 , سی شارپ نوشته بودم حالا اومدم بانکش رو اکسس کردم.همه کدها رو تغییر دادم و همه قسمت هاش کار میکنه به جز دو قسمت : آپدیت و فرم پرینت
یک دیتایست درست کردم و جدول مورد نیازم رو روی آن گذاشتم و کد کوئری آن در برنامه قبل این بود:
SELECT id, nameshakhs, family, codemelli, mobile, tell, address, khadamat, stardate, enddate, price, info
FROM person
WHERE (id = @id)
حالا که همین کد رو برای جدول و دیتاست جدیده میزارم به @id گیر میده و نمیزاره به صورت پارامتری باشه
مشکل از کجاست؟
واسه آپدیت هم از کد زیر استفاده میکنم اما هیچ رکوردی آپدیت نمیشه
cmd = new OleDbCommand("UPDATE person SET person.[nameshakhs]=@1, person.[family]=@2, person.[codemelli]=@3, person.[mobile]=@4, person.[tell]=@5, person.[address]=@6, person.[khadamat]=@7, person.[stardate]=@8, person.[enddate]=@9, person.[price]=@10, person.[info]=@11 WHERE person.[id]=@id", sc);
OleDbParameter[] _parm = new OleDbParameter[12];
_parm[0] = new OleDbParameter("@id", OleDbType.Integer) { Value = Int32.Parse(txtID.Text) };
_parm[1] = new OleDbParameter("@1", OleDbType.VarChar) { Value = txtName.Text };
_parm[2] = new OleDbParameter("@2", OleDbType.VarChar) { Value = txtFamily.Text };
_parm[3] = new OleDbParameter("@3", OleDbType.VarChar) { Value = txtCode.Text };
_parm[4] = new OleDbParameter("@4", OleDbType.VarChar) { Value = txtmob.Text };
_parm[5] = new OleDbParameter("@5", OleDbType.VarChar) { Value = txttell.Text };
_parm[6] = new OleDbParameter("@6", OleDbType.VarChar) { Value = txtaddress.Text };
_parm[7] = new OleDbParameter("@7", OleDbType.Integer) { Value = type };
_parm[8] = new OleDbParameter("@8", OleDbType.VarChar) { Value = sday.Text + smonth.Text + txtvsyear.Text };
_parm[9] = new OleDbParameter("@9", OleDbType.VarChar) { Value = eday.Text + emonth.Text + txtveyear.Text };
_parm[10] = new OleDbParameter("@10", OleDbType.VarChar) { Value = txtprice.Text };
_parm[11] = new OleDbParameter("@11", OleDbType.VarChar) { Value = txtmemo.Text };
cmd.Parameters.AddRange(_parm);
try
{
sc.Open();
cmd.ExecuteNonQuery();
lblmsg.Text = "رکورد ويرايش شد";
RefreshDatagrid();
sc.Close();
}
catch (Exception ex)
{
MessageBox.Show("بروز خطا" + ex.Message);
}
من یک برنامه کوچک چند مدت پیش با sql server 2008 , سی شارپ نوشته بودم حالا اومدم بانکش رو اکسس کردم.همه کدها رو تغییر دادم و همه قسمت هاش کار میکنه به جز دو قسمت : آپدیت و فرم پرینت
یک دیتایست درست کردم و جدول مورد نیازم رو روی آن گذاشتم و کد کوئری آن در برنامه قبل این بود:
SELECT id, nameshakhs, family, codemelli, mobile, tell, address, khadamat, stardate, enddate, price, info
FROM person
WHERE (id = @id)
حالا که همین کد رو برای جدول و دیتاست جدیده میزارم به @id گیر میده و نمیزاره به صورت پارامتری باشه
مشکل از کجاست؟
واسه آپدیت هم از کد زیر استفاده میکنم اما هیچ رکوردی آپدیت نمیشه
cmd = new OleDbCommand("UPDATE person SET person.[nameshakhs]=@1, person.[family]=@2, person.[codemelli]=@3, person.[mobile]=@4, person.[tell]=@5, person.[address]=@6, person.[khadamat]=@7, person.[stardate]=@8, person.[enddate]=@9, person.[price]=@10, person.[info]=@11 WHERE person.[id]=@id", sc);
OleDbParameter[] _parm = new OleDbParameter[12];
_parm[0] = new OleDbParameter("@id", OleDbType.Integer) { Value = Int32.Parse(txtID.Text) };
_parm[1] = new OleDbParameter("@1", OleDbType.VarChar) { Value = txtName.Text };
_parm[2] = new OleDbParameter("@2", OleDbType.VarChar) { Value = txtFamily.Text };
_parm[3] = new OleDbParameter("@3", OleDbType.VarChar) { Value = txtCode.Text };
_parm[4] = new OleDbParameter("@4", OleDbType.VarChar) { Value = txtmob.Text };
_parm[5] = new OleDbParameter("@5", OleDbType.VarChar) { Value = txttell.Text };
_parm[6] = new OleDbParameter("@6", OleDbType.VarChar) { Value = txtaddress.Text };
_parm[7] = new OleDbParameter("@7", OleDbType.Integer) { Value = type };
_parm[8] = new OleDbParameter("@8", OleDbType.VarChar) { Value = sday.Text + smonth.Text + txtvsyear.Text };
_parm[9] = new OleDbParameter("@9", OleDbType.VarChar) { Value = eday.Text + emonth.Text + txtveyear.Text };
_parm[10] = new OleDbParameter("@10", OleDbType.VarChar) { Value = txtprice.Text };
_parm[11] = new OleDbParameter("@11", OleDbType.VarChar) { Value = txtmemo.Text };
cmd.Parameters.AddRange(_parm);
try
{
sc.Open();
cmd.ExecuteNonQuery();
lblmsg.Text = "رکورد ويرايش شد";
RefreshDatagrid();
sc.Close();
}
catch (Exception ex)
{
MessageBox.Show("بروز خطا" + ex.Message);
}