PDA

View Full Version : نحوه ویرایش همزمان اطلاعات یک جدول



salmah
جمعه 25 اردیبهشت 1394, 15:20 عصر
سلام من میخوام همه فیلدای توی جدولم را همزمان ویرایش کنم باید چه کار کنم
یکی از فیلدا را برای هر سطر باید مصاحبه کنم و بقیه را بامقدار ثابت ویرایش کنم

malloc
جمعه 25 اردیبهشت 1394, 21:02 عصر
سوال مشخص نیست .... به انضمام اینکه انگار سوال اسکوال هست و اینجا جاش نیست

اما اگه بیشتر توضیح بدید احتمالا بتونم کمکتون کنم

salmah
جمعه 25 اردیبهشت 1394, 21:09 عصر
من می خوام موجودی انبار کالا را در پایانسال محاسبه کنم
و این موجودی را به سال جدید انتقال بدم
یعنی موجودی را حساب کنم suminitial
تاریخش هم که یه مقدار ثابت میشه و از یه تکس باکس گرفته میشه
مثل کد زیر که توی ریداد دکمه ثیت شده
حالامن نمی خوام که کاربر این id را یکی یکی وارد کنه و این انتقال موجودی به سال جدید (که میشه دستور ویرایش) به طور خودکار برای همه ثبت بشه


int suminitial;
SqlConnection cnc = new SqlConnection();
cnc.ConnectionString = ConfigurationManager.ConnectionStrings["busConnectionString1"].ToString();
cnc.Open();
//بررسی مقادیر ممکنه
SqlCommand CVorodi = new SqlCommand("SELECT COUNT(inumber) FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '1' AND titems.id = @id ", cnc);
SqlCommand Sinitial = new SqlCommand("SELECT initialamount FROM titems WHERE (id = @id)", cnc);
SqlCommand Ckhoroji = new SqlCommand("SELECT count(inumber) FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '0' AND titems.id = @id", cnc);
SqlCommand SumVorodi = new SqlCommand("SELECT SUM(trequest.inumber) AS jamvorod FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '1' AND titems.id = @id", cnc);//54
SqlCommand SumKoroji = new SqlCommand("SELECT SUM(trequest.inumber) AS jamkoroj FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '0' AND titems.id = @id", cnc);//9

CVorodi.Parameters.AddWithValue("id", lb_id.Text);
Sinitial.Parameters.AddWithValue("id", lb_id.Text);
Ckhoroji.Parameters.AddWithValue("id", lb_id.Text);
SumVorodi.Parameters.AddWithValue("id", lb_id.Text);
SumKoroji.Parameters.AddWithValue("id", lb_id.Text);

string sCVorodi = CVorodi.ExecuteScalar().ToString();//count 1
string sCkhoroji = Ckhoroji.ExecuteScalar().ToString();//count 0

int iSinitial = int.Parse(Sinitial.ExecuteScalar().ToString());

int iSumVorodi;
if (sCVorodi == "0") { iSumVorodi = 0; }
else { iSumVorodi = int.Parse(SumVorodi.ExecuteScalar().ToString()); }

// iSumVorodi = int.Parse(SumVorodi.ExecuteScalar().ToString());

int iSumKoroji;
if (sCkhoroji == "0") { iSumKoroji = 0; }
else { iSumKoroji = int.Parse(SumKoroji.ExecuteScalar().ToString()); }


suminitial = iSumVorodi - iSumKoroji + iSinitial;//25-52+40=13



//update

SqlCommand cmd = new SqlCommand("UPDATE titems SET initialamount = @initialamount, Sdtainitialamount = @Sdtainitialamount, Edtainitialamount = @Edtainitialamount WHERE (id= @id)", cnc);

//ثبت درخواست

cmd.Parameters.AddWithValue("@id", lb_id.Text);
cmd.Parameters.AddWithValue("@initialamount", suminitial);
cmd.Parameters.AddWithValue("@Sdtainitialamount", "1394/12/29");
cmd.Parameters.AddWithValue("@Edtainitialamount", "1395/12/29");

// string idta = dd_year.SelectedValue + "/" + dd_moth.SelectedValue + "/" + dd_day.SelectedValue;



cmd.ExecuteNonQuery();
lb_id.Text = "happy";

malloc
شنبه 26 اردیبهشت 1394, 00:19 صبح
اگه درست متوجه شده باشم بنظرم شما براساس یه مجموعه آی دی خاص (که نمیخوای کاربر واردشون کنه ) میخوای ویرایش کنی .... خوب پس بهترین روش اینه اول یه سلکت به دیتا بیست بزنی و لبست همه اون آی دی هایی که خودت میدونی چطور بدستشون میاری رو بدست بیاری ... بعد اون لیست رو بندازی توی یه Foreach و براساس اون آی دی که تو Foreach داری ویرایش رو انجام بدی

salmah
شنبه 26 اردیبهشت 1394, 20:29 عصر
اگه درست متوجه شده باشم بنظرم شما براساس یه مجموعه آی دی خاص (که نمیخوای کاربر واردشون کنه ) میخوای ویرایش کنی .... خوب پس بهترین روش اینه اول یه سلکت به دیتا بیست بزنی و لبست همه اون آی دی هایی که خودت میدونی چطور بدستشون میاری رو بدست بیاری ... بعد اون لیست رو بندازی توی یه Foreach و براساس اون آی دی که تو Foreach داری ویرایش رو انجام بدی

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

SqlCommand cmd = new SqlCommand("select id from titems", cnc);
DataTable table =new DataTable();
table.Load(cmd.ExecuteReader());
foreach (DataRow row in table.Rows)
{
// مقدار محاسبه ای
//************************************************** **

SqlCommand CVorodi = new SqlCommand("SELECT COUNT(inumber) FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '1' ", cnc);
SqlCommand Sinitial = new SqlCommand("SELECT initialamount FROM titems", cnc);
SqlCommand Ckhoroji = new SqlCommand("SELECT count(inumber) FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '0'", cnc);
SqlCommand SumVorodi = new SqlCommand("SELECT SUM(trequest.inumber) AS jamvorod FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '1'", cnc);//54
SqlCommand SumKoroji = new SqlCommand("SELECT SUM(trequest.inumber) AS jamkoroj FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.Sdtainitialamount < trequest.dtarequest AND titems.Edtainitialamount >= trequest.dtarequest AND trequest.ioutin = '0'", cnc);//9

//CVorodi.Parameters.AddWithValue("id", lb_id.Text);
//Sinitial.Parameters.AddWithValue("id", lb_id.Text);
//Ckhoroji.Parameters.AddWithValue("id", lb_id.Text);
//SumVorodi.Parameters.AddWithValue("id", lb_id.Text);
//SumKoroji.Parameters.AddWithValue("id", lb_id.Text);

string sCVorodi = CVorodi.ExecuteScalar().ToString();//count 1
string sCkhoroji = Ckhoroji.ExecuteScalar().ToString();//count 0

int iSinitial = int.Parse(Sinitial.ExecuteScalar().ToString());

int iSumVorodi;
if (sCVorodi == "0") { iSumVorodi = 0; }
else { iSumVorodi = int.Parse(SumVorodi.ExecuteScalar().ToString()); }



int iSumKoroji;
if (sCkhoroji == "0") { iSumKoroji = 0; }
else { iSumKoroji = int.Parse(SumKoroji.ExecuteScalar().ToString()); }

int suminitial;
suminitial = iSumVorodi - iSumKoroji + iSinitial;//25-52+40=13


//************************************************** *
SqlCommand cmdedit = new SqlCommand("UPDATE titems SET initialamount = @initialamount, Sdtainitialamount = @Sdtainitialamount, Edtainitialamount = @Edtainitialamount ", cnc);
cmdedit.Parameters.AddWithValue("@initialamount", suminitial);
cmdedit.Parameters.AddWithValue("@Edtainitialamount","1395/12/29");
cmdedit.Parameters.AddWithValue("@Sdtainitialamount","1394/12/29");
//cmdedit.Parameters.AddWithValue("@id",table.Rows);
cmdedit.ExecuteNonQuery();

}

salmah
چهارشنبه 30 اردیبهشت 1394, 23:14 عصر
لطفا راهنمایی کنید:عصبانی++: