PDA

View Full Version : سوال: ویرایش بانک اطلاعاتی توسط گرید ویو



atefeh.mr
جمعه 24 دی 1389, 20:25 عصر
سلام
من توسط این خط میتونم اطلاعات یک سطر از یک فیلد خاص مثلا نام خانوادگی رو از طریق گرید ویو به تمام سطر های یک فیلد دیگه مثلا نام انتقال بدم

sqlCommand1.CommandText = "update table1 set name= '" + dataGridView1.CurrentRow.Cells[1].Value.ToString();+"'";

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

sqlCommand1.CommandText = "update table1 set dataGridView1.CurrentRow.Cells[0].Value='" + dataGridView1.CurrentRow.Cells[1].Value.ToString()+"'";

اما خطا میده لطف کنید راهنمایی بفرمایید
خیلی ممنونم

hossin.esm
جمعه 24 دی 1389, 20:37 عصر
دوست عزیز شما باید با اضافه کردن یک شرط در دستور update را روی یک رکورد خاص انجام دهید.


string name= dataGridView1.CurrentRow.Cells[1].Value.ToString();
string id=dataGridView1.CurrentRow.Cells[0].Value.ToString();
sqlCommand1.CommandText = "update table1 set name= '" + name +"' where id='"+id+"'";

atefeh.mr
جمعه 24 دی 1389, 21:57 عصر
سلام خیلی ممنونم از راهنمایی شما
اما با اضافه کردن این دستورات باز هم هیچ تغییری در برنامه ایجاد نشد
نمی دونم باید چیکار کنم

atefeh.mr
جمعه 24 دی 1389, 22:04 عصر
اگه کسی می تونه لطف کنه و کمک کنه با این پست رجوع کنید بیشتر متوجه اصل برنامه میشید
تغییر اطلاعات ثبت شده در بانک بر اساس داده های موجود در Grid
واقعا نیاز به کمکتون دارم ممنون

hossin.esm
جمعه 24 دی 1389, 22:19 عصر
من فقط مثال زدم شما باید فیلد های جدول را مشخص کنید تا دستور کامل را ایجاد کنم .
اگر امکان داره برنامه را ضمیمه کن تا مشکل را رفع کنیم.

javad_r_85
جمعه 24 دی 1389, 22:29 عصر
سلام::::
ببینید دوست عزیز اولا این روش شما روش خوبی نیست و از دیتا گرید ویو بیشتر برای نمایش استفاده میشه و برای ویرایش و افزودن از تکست باکس های که به برنامه اضافه میکنیم استفاده می شه ولی بازم اگر می خوایید از این روش استفاده کنید و از TypedDataset استفاده کرده و جدولتان را با آن مقید کردی از متد Update دیتا ست استفاده کنید و نیاز به کدی هم نیست و به طور اتو ماتیک داده هایی که در جدول تغییر کردند به بانک اعمال شده.

atefeh.mr
جمعه 24 دی 1389, 22:32 عصر
اخه این یک پروژه که از همین راه باید تحویل داده بشه بازم ممنون از راهنماییتون

atefeh.mr
جمعه 24 دی 1389, 22:40 عصر
از لطف همه دوستان واقعا ممنونم
این هم فایل برنامه هستش ضمیمه کردم

با تشکر فراوان

javad_r_85
جمعه 24 دی 1389, 22:58 عصر
از اونجا که دیتا ست مستقیم با دیتا گرید ویو در ارتباط هست شما می تونید از متد زیر که مربوط به table Adapter هست استفاده کنید.




this.table1TableAdapter.Update(this.test1DataSet.T able1);


و یا متدهای دیگری که از اون Overload شده مانند این متد





this.table1TableAdapter.Update("نام جدید", "فامیلی جدی", " ایدی جدی","نام قدیم", "فامیلی قدیم", " ایدی قدیم");

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

MortezaGity
جمعه 24 دی 1389, 23:01 عصر
دوست عزیز این کدها رو من از داخل یه پروژه پیدا کردم. فقط چون وقت ندارم خیلی، توضیحی نمیدم. البته کدها سادس. میتونید با نگاه کردن بهشون بفهمید چیکار می کنن.




SqlDataAdapter da=new SqlDataAdapter("select * from product",strcon);
SqlCommandBuilder cb=new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource=ds.Tables[0];


da.Update(ds);

parsdarab
جمعه 24 دی 1389, 23:02 عصر
سلام برو به لینک زیر و مقاله رو دانلود کن
لینک (http://barnamenevis.org/showthread.php?262942-%DB%8C%DA%A9%D8%B3%D8%B1%DB%8C-%DA%A9%D8%AF%D9%87%D8%A7%DB%8C-%D8%B1%D8%A7%DB%8C%D8%AC-%D9%88-%D8%A8%D9%87-%D8%AF%D8%B1%D8%AF-%D8%A8%D8%AE%D9%88%D8%B1-%D8%AF%D8%B1-%D9%88%DB%8C-%D8%A8%DB%8C-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA)

atefeh.mr
جمعه 24 دی 1389, 23:08 عصر
کد من اینه :
dataGridView1.ReadOnly = false;
sqlConnection1.Open();
sqlCommand1.CommandText = "update table1 set name= '" + dataGridView1.CurrentRow.Cells[1].Value.ToString()+"'";
sqlCommand1.ExecuteNonQuery();
test1DataSet.Table1.Clear();
table1TableAdapter.Fill(test1DataSet.Table1);
dataGridView1.Update();
sqlConnection1.Close();

مشکل فقط سر اون فیلد name هست که همه سزر ها رو ویرایش میکنه نمی دونم چی باید بجاش بزارم تا فقط یک سطر رو ویرایش کنه

hossin.esm
جمعه 24 دی 1389, 23:14 عصر
sqlCommand1.CommandText = "update table1 set name= '" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "' where id='" + dataGridView1.CurrentRow.Cells[2].Value.ToString() + "'";

javad_r_85
جمعه 24 دی 1389, 23:18 عصر
کد منم اینه



string cmd="UPDATE table1 SET name='{0}'";
cmd=string.Format(cmd,dataGridView1.CurrentRow.Cel ls [1].Value.ToString());

sqlCommand1 = new SqlCommand(cmd, sqlConnection1);
sqlConnection1.Open();
sqlCommand1.ExecuteNonQuery();
sqlConnection1.Close();

MessageBox.Show("0ok");




البته این چون از شرط استفاده نکرده تمام فیلدهای نام جدول را تغییر خواهد داد توصیه میکنم از کلید اصلی حتما استفاده کنید