PDA

View Full Version : آپدیت یک ردیف از datagridview



hamidtmu
جمعه 06 اردیبهشت 1398, 18:53 عصر
سلام دوستان
یک سری دستور نوشتم که بررسی کنند ببینم ایا شهریه پرداخت شده است یا خیر
مثلا اگه عدد یک در فلان ستون بود یعنی شهریه پرداخت شده است

حالا می خوام جدول را آپدیت کنم و عدم قبولی به قبولی تبدلی بشه به چه صورت اینکار را انجام بدم


try
{


cmd.Parameters.Clear();
cmd.Connection = con;


con.Open();
SqlCommand cmd2 = new SqlCommand("Update tbl1 Set ghabol=@ghabol where ID=" + Convert.ToInt32(dgvp.SelectedCells[0].Value)", con);
cmd2.ExecuteNonQuery();

con.Close();
MessageBox.Show("shod");
}

catch
{
MessageBox.Show("nashod");
}



کد بالا غلطه و دیتا ستون قبولی آپدیت نمیشه
یه نکته هم اینکه نمیخام کل جدولم آپدیت بشه فقط ردیف انتخاب شده در دیتا گرید ویو میخام اپ دیت بشه

Mahmoud.Afrad
جمعه 06 اردیبهشت 1398, 20:53 عصر
مشکل اینه که @ghabol را مقدار ندادید.

hamidtmu
جمعه 06 اردیبهشت 1398, 23:06 عصر
مشکل اینه که @ghabol را مقدار ندادید.


int s1
s1 = int.Parse(dr["ghabol "].ToString());


try
{


cmd.Parameters.Clear();
cmd.Connection = con;


con.Open();
SqlCommand cmd2 = new SqlCommand("Update tbl1 Set ghabol=@ghabol where ID=" + Convert.ToInt32(dgvp.SelectedCells[0].Value)", con);
cmd2.ExecuteNonQuery();

con.Close();
MessageBox.Show("shod");
}

catch
{
MessageBox.Show("nashod");
}




به صورت بالا اصلاح کردم ولی نشد.


اگه بخام یک ردیف از دیتا گرید ویو را آپ دیت کنم کد بالا درسته

Mahmoud.Afrad
جمعه 06 اردیبهشت 1398, 23:31 عصر
int s1
s1 = int.Parse(dr["ghabol "].ToString());


try
{


cmd.Parameters.Clear();
cmd.Connection = con;


con.Open();
SqlCommand cmd2 = new SqlCommand("Update tbl1 Set ghabol=@ghabol where ID=" + Convert.ToInt32(dgvp.SelectedCells[0].Value)", con);
cmd2.ExecuteNonQuery();

con.Close();
MessageBox.Show("shod");
}

catch
{
MessageBox.Show("nashod");
}




به صورت بالا اصلاح کردم ولی نشد.


اگه بخام یک ردیف از دیتا گرید ویو را آپ دیت کنم کد بالا درسته

شما هیچ پارامتری ایجاد و مقداردهی نکردید
SqlCommand cmd2 = new SqlCommand("Update tbl1 Set ghabol=@ghabol where ID=@ID" , con);
cmd2.Parameters.AddWithValue("@ID", Convert.ToInt32(dgvp.SelectedCells[0].Value));
cmd2.Parameters.AddWithValue("@ghabol", //.......//);
به جای کامنت مقدار قرار بدید

hamidtmu
شنبه 07 اردیبهشت 1398, 00:50 صبح
کدم به صورت زیر اصلاح شده ولی بازم یه جاش میلنگه

try
{
DataTable dt2 = newDataTable();
DataRow dr = dt2.NewRow();
SqlDataAdapter datada2 = newSqlDataAdapter("SELECT * FROM tbl1 ", con);
datada2.Fill(dt2);

foreach (DataRow dr2 in dt2.Rows)
{
int s1;
int vaghe;
s1 = int.Parse(dr2["s1"].ToString());
vaghe = int.Parse(dr2["s2"].ToString());
if (s1 == 2)
{
S2 = s1;
dr2["s2"] = vaghe;
}
cmd.Parameters.Clear();
cmd.Connection = con;

SqlCommand cmd2 = newSqlCommand("Update tbl1 Set s1=@s1,s2=@vs2 where ID=@ID", con);
cmd2.Parameters.AddWithValue("@ID", Convert.ToInt32(dgvp.SelectedCells[0].Value));
cmd2.Parameters.AddWithValue("@s1", s1).ToString();
cmd2.Parameters.AddWithValue("@s2", s2).ToString();

con.Open();
cmd.ExecuteNonQuery();
con.Close();

hamidtmu
شنبه 07 اردیبهشت 1398, 00:50 صبح
تشکر. درست شد

hamidtmu
شنبه 07 اردیبهشت 1398, 01:02 صبح
تشکر درست شد

Mahmoud.Afrad
شنبه 07 اردیبهشت 1398, 01:42 صبح
کدم به صورت زیر اصلاح شده ولی بازم یه جاش میلنگه

try
{
DataTable dt2 = newDataTable();
DataRow dr = dt2.NewRow();
SqlDataAdapter datada2 = newSqlDataAdapter("SELECT * FROM tbl1 ", con);
datada2.Fill(dt2);

foreach (DataRow dr2 in dt2.Rows)
{
int s1;
int vaghe;
s1 = int.Parse(dr2["s1"].ToString());
vaghe = int.Parse(dr2["s2"].ToString());
if (s1 == 2)
{
S2 = s1;
dr2["s2"] = vaghe;
}
cmd.Parameters.Clear();
cmd.Connection = con;

SqlCommand cmd2 = newSqlCommand("Update tbl1 Set s1=@s1,s2=@vs2 where ID=@ID", con);
cmd2.Parameters.AddWithValue("@ID", Convert.ToInt32(dgvp.SelectedCells[0].Value));
cmd2.Parameters.AddWithValue("@s1", s1).ToString();
cmd2.Parameters.AddWithValue("@s2", s2).ToString();

con.Open();
cmd.ExecuteNonQuery();
con.Close();


کل این کد را میشه با یک کوئری انجام داد. اینکه برای یک شرط کل سطرها را لود کنید اشتباه هست.

hamidtmu
شنبه 07 اردیبهشت 1398, 02:36 صبح
کل این کد را میشه با یک کوئری انجام داد. اینکه برای یک شرط کل سطرها را لود کنید اشتباه هست.

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

hamidtmu
سه شنبه 10 اردیبهشت 1398, 02:01 صبح
با سلام . در کد های بالا من این قسمت کدم مشکل داره وقتی میزنم کل دیتا بیسم یه شکل میشه

چه باید کرد
where ID=@ID", con);

با دیتا گرید ویو انتخاب می کنم ردیف ها را برای اپ دیت

Mahmoud.Afrad
سه شنبه 10 اردیبهشت 1398, 02:59 صبح
به چه روشی ردیفها را انتخاب می کنید؟
اون حلقه برای چیه؟

hamidtmu
سه شنبه 10 اردیبهشت 1398, 11:35 صبح
به چه روشی ردیفها را انتخاب می کنید؟
اون حلقه برای چیه؟

با سلام. کل دستور من اینه




private void button1_Click(object sender, EventArgs e)
{

DataTable dt2 = new DataTable();
DataRow dr = dt2.NewRow();
SqlDataAdapter datada2 = new SqlDataAdapter("SELECT * FROM tip ", con);
datada2.Fill(dt2);

foreach (DataRow dr2 in dt2.Rows)
{
int s1, s2, s3;
int vaghe;

s1 = int.Parse(dr2["s1"].ToString());
s2 = int.Parse(dr2["s2"].ToString());
s3 = int.Parse(dr2["s3"].ToString());






vaghe = s1 + s2 + s3;

dr2["vaghe"] = vaghe;





cmd.Parameters.Clear();
cmd.Connection = con;
SqlCommand cmd2 = new SqlCommand("Update tip set vaghe=@vaghe where ID=@ID", con);

cmd2.Parameters.AddWithValue("@ID", Convert.ToInt32(dgvp.SelectedCells[0].Value));
cmd2.Parameters.AddWithValue("@vaghe",vaghe).ToString();





con.Open();
cmd2.ExecuteNonQuery();
con.Close();

}


من سه ستون دیتا بیس را جمع می کنم(s1+s2+s3)

ودر ستون vaghe می ریزم

چون این اعداد در دیتا بیس عوض میشند با دیتا گرید ویود به صورت ردیفی انتخاب و ویرایش میشه
وقتی دستور اپ دیت را میدم . نتایچ هر ردیفی که انتخاب می کنم جمع اخرین ردیفه

مثلا ردیف اول من 1و2و3 هست
ردیف وسط 3و3و3
ردیف اخر.4.4.4

هر ردیفی را که با دیتا گرید ویو انتخاب و اپدیت میکنم میشه جمع اخرین ردیف یعنی 12

150103
اون حلقه هم فکر میکنم اشتباس.ولی نمی دونم چی جاش بزارم

hamidtmu
سه شنبه 10 اردیبهشت 1398, 15:44 عصر
فکر کنم بشه اون حلقه را محدود کنم به ردیف انتخاب شده درست بشه.ولی به چه صورت.

Mahmoud.Afrad
سه شنبه 10 اردیبهشت 1398, 18:59 عصر
ستون vaghe جمع سه ستون هست. خب این کار برای همه سطرها انجام میشه؟ اگر جواب مثبت هست، ستونهای محاسباتی را بایست در زمان اجرا در سلکت ایجاد کرد پس به ستون vaghe نیازی نیست.