PDA

View Full Version : آپدیت کردن یک رکورد



syasamboo3
چهارشنبه 31 خرداد 1391, 23:44 عصر
سلام به همه.میدونم سوالم ابتداییه ولی چه کنیم تازه شرو کردیم.
روی یک رکورد تو دیتا گرید که کلیک میکنم اطلاعاتش تو تکست باکسا نمایش داده میشه کد زیر رو برای آپدیتش نوشتم ارور میده. میشه بگید مشکلش کجاست؟ممنون میشم


scommand.CommandText = ("Update moen set tdate='" + textBox1.Text + "',tname= '" + textBox2.Text + "',md= '" + textBox3.Text + "',mp= '" + textBox4.Text + "',babat= '" + textBox5.Text + "',tozih= '" + textBox6.Text + "',tchek= '" + textBox7.Text + "',shchek= '" + textBox8.Text + "'where id ='" + EmpID + "'");

scommand.ExecuteNonQuery();

dt.Clear();
scommand.CommandText = "Select * from moen";
sData = new OleDbDataAdapter(scommand);
sData.Fill(dt);
grd.DataSource = dt;
MessageBox.Show("داده‌ها با موفقیت بروز شد گردید!");

syasamboo3
چهارشنبه 31 خرداد 1391, 23:51 عصر
88537اینم عکس خطا

Alizadeh_ENV
پنج شنبه 01 تیر 1391, 00:38 صبح
احتمالا یک یا چند فیلد از جدولت نوع داده ای به غیر از تکست دارن و شما داری همه داده هارو از نوع تکست وارد میکنی
مثلا اون Empid توی شرط احتمالا عدد نیست؟ اگه عدد باشه باید کوتیشن های دوطرفش رو برداری

syasamboo3
پنج شنبه 01 تیر 1391, 23:56 عصر
کسی نبود مشکل ما رو حل کنه؟؟؟؟؟؟؟؟؟؟

aslan
جمعه 02 تیر 1391, 01:33 صبح
آیا نوع داده فیلد ID غیر عددی است ؟؟؟ در صورتیکه عددی است scommand.CommandText را اصلاح کنید

hosseinenayati_2009
جمعه 02 تیر 1391, 01:58 صبح
سلام همون طور که دوستان گفتن و خطا نشون میده مشکل در نوع داده ای است که شما به روز می کنید. شاید نوع داده تون از نوع عدد باشه و شما یه رشته میخواهید وارد کنید .این خطا به معنی اشتباه در نوع داده ای است

syasamboo3
جمعه 02 تیر 1391, 12:18 عصر
بله دوستان نوع ایدی auto number هستش.
empid رو هم یه متغیر تعریف کردم که فک کنم اشتباه است.
اگه میشه صحیحش رو کسی بزاره ممنون میشم.(تازه کارم و محتاج کمک)

syasamboo3
جمعه 02 تیر 1391, 14:07 عصر
کسی نبود به ماکمک کنه
گیجیم ومحتاج کمک دوستان

syasamboo3
جمعه 02 تیر 1391, 15:36 عصر
بی انصافا یه نفر کمک کنه خوب

Arash_janusV3
جمعه 02 تیر 1391, 15:54 عصر
از modify جدولتون یک عکس بگذارید

syasamboo3
جمعه 02 تیر 1391, 15:57 عصر
اگر منظورتون جدول دیتابیس هست 88607بفرایید

Arash_janusV3
جمعه 02 تیر 1391, 16:11 عصر
یک عکس هم از داده جدول بدید
و بگید کدام رکورد را می خواهید update کنید

این دستور را به این اصلاح کنید

scommand.CommandText = ("Update moen set tdate='" + textBox1.Text + "',tname= '" + textBox2.Text + "',md= '" + textBox3.Text + "',mp= '" + textBox4.Text + "',babat= '" + textBox5.Text + "',tozih= '" + textBox6.Text + "',tchek= '" + textBox7.Text + "',shchek= '" + textBox8.Text + "'where id =" + EmpID );


از memo استفاده نکنید

syasamboo3
جمعه 02 تیر 1391, 16:16 عصر
دوست عزیز فرقی نمیکنه . میخوام هر فیلدی رو که خواستم آپدیت کنم.
کدی رو هم که لطف فرمودید گذاشتم . دیگه ارور نمیده.پیغام آپدیت هم نمایش داده میشه ولی تغییری توی اطلاعات اعمال نمیشه

Arash_janusV3
جمعه 02 تیر 1391, 16:21 عصر
اینها را انجام بدید و تست کنید


این دستور را به این اصلاح کنید

scommand.CommandText = ("Update moen set tdate='" + textBox1.Text + "',tname= '" + textBox2.Text + "',md= '" + textBox3.Text + "',mp= '" + textBox4.Text + "',babat= '" + textBox5.Text + "',tozih= '" + textBox6.Text + "',tchek= '" + textBox7.Text + "',shchek= '" + textBox8.Text + "'where id =" + EmpID );


از memo استفاده نکنید

syasamboo3
جمعه 02 تیر 1391, 16:26 عصر
هر دو کار رو هم انجام دادم بازم تغییری اعمال نمیشه

Arash_janusV3
جمعه 02 تیر 1391, 16:29 عصر
در جدول به صورت دستی تغییراتی انجام بدید و ببینید آیا اعمال می شه

syasamboo3
جمعه 02 تیر 1391, 16:36 عصر
بله.میشه مشکلی نداره

ahmadreza517
جمعه 02 تیر 1391, 16:48 عصر
به نام تنها برنامه نویس هستی
سلام ,

برای مقدار دهی اطلاعات از parameter استفاده کنید برای جلوگیری از inject اطلاعات.

می تونید
SqlParameter
OleDbParameter
جستجو کنید.

syasamboo3
جمعه 02 تیر 1391, 16:54 عصر
دوست عزیز میشه طوری بفرمایید منم متوجه بشم.گفتم من یه تازه کارم.

veniz2008
جمعه 02 تیر 1391, 17:01 عصر
سلام،اینم یه دستور آپدیت با روش پارامترها:

SqlConnection con = new SqlConnection("Data Source = (local); Initial Catalog = test1; Integrated Security = True");
SqlCommand cmd = new SqlCommand("Update users set code =@cod,number =@number,price=@price,name=@name where username=@username",con);
cmd.Parameters.AddWithValue("@username", TextBox1.Text);
cmd.Parameters.AddWithValue("@cod", TextBox2.Text);
cmd.Parameters.AddWithValue("@number", TextBox3.Text);
cmd.Parameters.AddWithValue("@price", TextBox4.Text);
cmd.Parameters.AddWithValue("@name",TextBox5.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

syasamboo3
جمعه 02 تیر 1391, 17:08 عصر
دوست عزیز ممنون از لطفت ولی کد شما هم ارور میده

veniz2008
جمعه 02 تیر 1391, 17:14 عصر
چه خطایی میده؟،این کدروی سیستم من بدون هیچ مشکلی کار میکنه،ببینید کل دستورات برای آپدیت همونطوری که می بینید 5 خط هم نمیشه،شما تمام کدی رو که داخل دکمه آپدیت نوشتی بزار اینجا تا ببینیم،متن خطا رو هم بذار عزیز.

syasamboo3
جمعه 02 تیر 1391, 17:28 عصر
کد قبلی گه گذاشته بودبد ارور میداد.این یکی رو هنوز امتحان نکردم
کدی رو که نوشتم و ارورش رو هم توی اولین پست همین تایپیک گذاشتم

Farshid007
جمعه 02 تیر 1391, 18:05 عصر
چجوری auto number هست؟
یعنی Identity رو فعال کردی؟

syasamboo3
جمعه 02 تیر 1391, 18:10 عصر
پایگاه داده اکسس استفاده کردم

Farshid007
جمعه 02 تیر 1391, 18:16 عصر
چرا با OleDB وصل نمیشی؟

syasamboo3
جمعه 02 تیر 1391, 19:05 عصر
دوستان از همتون تشکر میکنم.خیلیزحمت کشیدید. به کمک شماها و یکم دست کاری مشکل حل شد.اینم کدنهایی:
scommand.CommandText =("Update moen set tdate =@tdate,tname =@tname,md=@md,mp=@mp,babat=@babat,tozih=@tozih,tc hek=@tchek,shchek=@shchek where id=@id");
scommand.Parameters.AddWithValue("@tdate", textBox1.Text);
scommand.Parameters.AddWithValue("@tname", textBox2.Text);
scommand.Parameters.AddWithValue("@md", textBox3.Text);
scommand.Parameters.AddWithValue("@mp", textBox4.Text);
scommand.Parameters.AddWithValue("@babat", textBox5.Text);
scommand.Parameters.AddWithValue("@tozih", textBox6.Text);
scommand.Parameters.AddWithValue("@tchek", textBox7.Text);
scommand.Parameters.AddWithValue("@shchek", textBox8.Text);
scommand.Parameters.AddWithValue("@id", label12.Text);
scommand.ExecuteNonQuery();
dt.Clear();
scommand.CommandText = "Select * from moen";
sData = new OleDbDataAdapter(scommand);
sData.Fill(dt);
grd.DataSource = dt;
MessageBox.Show("داده‌ها با موفقيت بروز گرديد!");