PDA

View Full Version : مشکل در کد آپدیت



programerinfonet
دوشنبه 15 آبان 1391, 16:57 عصر
سلام خدمت دوستان عزیز
من تو برنامم از کد زیر جهت آپدیت اطلاعات در دیتاگرید استفاده می کنم اما اعمال نمیشه
یعنی پیام میده آپدیت انجام شده اما نشده
اینم کدم


SqlDataAdapter adap = new SqlDataAdapter();
adap.UpdateCommand=new SqlCommand("UPDATE sanadkala SET mandeh = @mandeh WHERE sanadid = '" + dgv.CurrentRow.Cells[0].Value + "' and kala='" + dgv.CurrentRow.Cells[2].Value + "'", my_con);
adap.UpdateCommand.Parameters.AddWithValue("@mandeh",resualt);
adap.UpdateCommand.Parameters.AddWithValue("@id", dgv.CurrentRow.Cells[0].Value.ToString());


resualt یک متغیر است که حاوی یک مقدار است
لطفأ کمکم کنید
ممنون

morteza271
دوشنبه 15 آبان 1391, 17:15 عصر
کوئری زیر رو توی sql اجرا کن ببین خروجی داری یا نه!
Select *
From sanadkala
Where sanadid = X1 And kala = X2

به جای X1 مقدار dgv.CurrentRow.Cells[0].Value و به جای X2 مقدار dgv.CurrentRow.Cells[2].Value رو قرار بده.
ببین اجرای کوئری بالا توی sql نتیجه داره یا نه!
همیشه سعی کنین کوئری ها رو توی خود sql اجرا کنید تا مطمئن شید که درسته!

programerinfonet
دوشنبه 15 آبان 1391, 17:29 عصر
آره دوست عزیز
رکورد مورد نظر رو پیدا کرد

morteza271
دوشنبه 15 آبان 1391, 17:37 عصر
آره دوست عزیز
رکورد مورد نظر رو پیدا کرد
جالبه!!!
به نظر باید درست باشه!! پس لطف کنید بقیه کدتون رو هم بذارین...
قسمتی که کوئری رو اجرا می کنید و بقیه.

programerinfonet
دوشنبه 15 آبان 1391, 17:50 عصر
private void btncalc_Click(object sender, EventArgs e)
{
resualt = Convert.ToString(Convert.ToInt64(dgv.CurrentRow.Ce lls[7].Value) - Convert.ToInt64(dgv2.CurrentRow.Cells[2].Value));

SqlDataAdapter adap = new SqlDataAdapter();
adap.UpdateCommand = new SqlCommand("UPDATE sanadkala SET mandeh = @mandeh WHERE sanadid = '" + dgv.CurrentRow.Cells[0].Value.ToString() + "' and kala='" + dgv.CurrentRow.Cells[2].Value.ToString() + "'", my_con);
adap.UpdateCommand.Parameters.AddWithValue("@mandeh", resualt);
adap.UpdateCommand.Parameters.AddWithValue("@id", dgv.CurrentRow.Cells[0].Value.ToString());
}

programerinfonet
دوشنبه 15 آبان 1391, 18:06 عصر
واضح تر بگم که من تو فرمم دو کنترل گرید دارم که اولی توسط دستور select و join رو که خودتون گفتید داره از بانک تغذیه می کنه
حالا با دابل کلیک روی یک رکورد مقادیرش توی یک پنل نمایش داده میشه که با اعمال تغییر روی فیلدش به نام mandeh اطلاعات به گرید دومی منتقل میشه (همون رکورد گرید اول اما فیلد مانده تغییر کرده)
حال میخوام با کد فوق یک رکورد که تو کد مشخصه در جدول sanadkala ویرایش بشه
همین
ممنون

programerinfonet
دوشنبه 15 آبان 1391, 18:12 عصر
من کد رو به شکل زیر تغییرش دادم که با خطای معروف object refrance not set مواجه شدم

SqlDataAdapter adap = new SqlDataAdapter("UPDATE sanadkala SET mandeh = @mandeh WHERE sanadid = '" + dgv.CurrentRow.Cells[0].Value.ToString() + "' and kala='" + dgv.CurrentRow.Cells[2].Value.ToString() + "'", my_con);
adap.UpdateCommand.Parameters.AddWithValue("@mandeh", resualt);
adap.UpdateCommand.Parameters.AddWithValue("@id", dgv.CurrentRow.Cells[0].Value.ToString());

morteza271
دوشنبه 15 آبان 1391, 18:13 عصر
خوب شما که اصلا اجراش نکردین!!!!!!!!!
این کدی که نوشتین فقط کوئری و پارامتراش ست شدن ولی هیچ وقت کوئری اجرا نمیشه!!!

morteza271
دوشنبه 15 آبان 1391, 18:15 عصر
من کد رو به شکل زیر تغییرش دادم که با خطای معروف object refrance not set مواجه شدم

SqlDataAdapter adap = new SqlDataAdapter("UPDATE sanadkala SET mandeh = @mandeh WHERE sanadid = '" + dgv.CurrentRow.Cells[0].Value.ToString() + "' and kala='" + dgv.CurrentRow.Cells[2].Value.ToString() + "'", my_con);
adap.UpdateCommand.Parameters.AddWithValue("@mandeh", resualt);
adap.UpdateCommand.Parameters.AddWithValue("@id", dgv.CurrentRow.Cells[0].Value.ToString());


به احتمال زیاد خطاش به خاطر یکی از عبارات زیره :
dgv.CurrentRow.Cells[0].Value
dgv.CurrentRow.Cells[2].Value

احتمالا یکی از این ستونها مقدار نداره و null هست و نمیتونه به string تبدیلش کنه!!!

programerinfonet
دوشنبه 15 آبان 1391, 18:20 عصر
خوب چه جوری اجراش کنم
یعنی میگید که یک کدی رو جا انداختم ؟

morteza271
دوشنبه 15 آبان 1391, 18:45 عصر
نمیدونم دقیقا چطوریه ولی میتونید به روش زیر عمل کنید :
SqlConnection Con = new SqlConnection(ConnectionString);
try
{
SqlCommand Cmd = new SqlCommand("Update TableName Set Name = @Name Where Id=@Id", Con);
Cmd.Parameters.AddWithValue(@"Name", "test");
Cmd.Parameters.AddWithValue(@"Id", 1);
Con.Open();
Cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Con.Close();
}