PDA

View Full Version : update جدول



rashidi_sm
جمعه 30 فروردین 1392, 17:02 عصر
سلام
من می خوام یک بخش از جدولم رو به روز رسانی کنم، کد زیر را براش نوشتم ولی اصلا تغییری در جدول ایجاد نمی کنه، خطایی هم نمی دهد، می شه راهنمایی کنید ایرادش کجاست
OleDbConnection con = new OleDbConnection(strCon);
OleDbCommand cmd = new OleDbCommand("Update wholeAction SET [stagePercentage]=@percent,[stageCost]=@cost WHERE ([stageName]=@name) AND ([houseType]=@house)", con);

cmd.Parameters.AddWithValue("@name", i.ToString());
cmd.Parameters.AddWithValue("@house", TypeHouse.Text);
cmd.Parameters.AddWithValue("@percen", sumDarsad[i - 1]);
cmd.Parameters.AddWithValue("@cost", costDarsad[i - 1]);


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

parvizwpf
جمعه 30 فروردین 1392, 17:10 عصر
ظاهرا کامند به هیچ کانکشن دیتابیسی وصل نیست.
cmd.Connection=con;

rashidi_sm
جمعه 30 فروردین 1392, 17:28 عصر
چرا وصل، انتهای تعریفش نوشتم، بعد از update
OleDbCommand cmd = new OleDbCommand("Update wholeAction SET [stagePercentage]=@percent,[stageCost]=@cost WHERE ([stageName]=@name) AND ([houseType]=@house)", con);

parvizwpf
جمعه 30 فروردین 1392, 17:44 عصر
این کد با پارامتراش تو اس کیو ال اجرا میشه؟ آیا پارامترها درست مقدار دهی میشن. یه دیباگ بگیر

rashidi_sm
جمعه 30 فروردین 1392, 18:02 عصر
پارامترها درست مقدار دهی شده اند و همه مقدار دارند

parvizwpf
جمعه 30 فروردین 1392, 18:06 عصر
هر چی میبینم سیتکسی مشکلی نیست مگر اینکه کامند شما اشتباه نوشته شده باشه.

rashidi_sm
جمعه 30 فروردین 1392, 18:08 عصر
همه رو چک کردم، کامندها همه درست مقدار دهی می شن، ولی در جدول درج نمی شن!!!! واقعا نمی دونم چرا

kebriya
جمعه 30 فروردین 1392, 18:14 عصر
به نظر من تنها دلیلی که میتونه باشه اینه که با این شرط where هیچ رکوردی وجود ندارد

rashidi_sm
جمعه 30 فروردین 1392, 19:10 عصر
والا راستش رکورد هم وجود دارد!

veniz2008
جمعه 30 فروردین 1392, 20:04 عصر
سلام.
اول اینکه چک کنید که شرط های کوئری شما، مقادیر درست رو بفرستند. همیشه سعی کنید آخر رشته هاتون یک ()Trim اضافه کنید تا فضاهای خالی ناخواسته رو حذف کنه.
مورد دوم اینکه مقادیر شرط ها رو درون messagebox نشون بدید تا مطمئن بشید که مقادیر درست رو میفرستید و در واقع شرط برقرار میشه.
مورد اخر اینکه فکر کنم یکی از پارامترهاتون یک t اضافه داشته باشه (percent@ موقعی که ارسال شده، نوشتید percen@ ).
کلا این کارها رو انجام بدید :


OleDbConnection con = new OleDbConnection(strCon);
OleDbCommand cmd = new OleDbCommand("Update wholeAction SET [stagePercentage]=@percent,[stageCost]=@cost WHERE ([stageName]=@name) AND ([houseType]=@house)", con);

MessageBox.Show(i.ToString().Trim());
MessageBox.Show(TypeHouse.Text.Trim());
cmd.Parameters.AddWithValue("@name", i.ToString().Trim());
cmd.Parameters.AddWithValue("@house", TypeHouse.Text.Trim());
cmd.Parameters.AddWithValue("@percent", sumDarsad[i - 1]);
cmd.Parameters.AddWithValue("@cost", costDarsad[i - 1]);

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

rashidi_sm
جمعه 30 فروردین 1392, 20:45 عصر
این کار رو هم انجام دادم، متاسفانه مشکل حل نشد
برای پارامترهای دیگه هم message box قرار دارم، و همگی نشان می دهند که پارامترهای صحیح ارسال می شوند

veniz2008
جمعه 30 فروردین 1392, 21:14 عصر
این کار رو هم انجام دادم، متاسفانه مشکل حل نشد
برای پارامترهای دیگه هم message box قرار دارم، و همگی نشان می دهند که پارامترهای صحیح ارسال می شوند
همه مقادیر بدرستی نشان داده شدن؟
مطمئنید که اون شرط در دیتابیس و جدول شما برقراره؟
یه عکس از خطا بگیرید و بذارید.

rashidi_sm
جمعه 30 فروردین 1392, 21:51 عصر
هیچ خطایی نمی ده، چک کردم که وارد data base می شه یا نه، که وارد می شه ولی تغییرات را ثبت نمی کنه

veniz2008
جمعه 30 فروردین 1392, 22:09 عصر
وقتی خطا نمیده ولی تغییراتی هم ایجاد نمیشه تنها چیزی که به نظرم میرسه اینه که شرط شما برقرار نمیشه. یعنی اون رکورد رو نمیتونه پیدا کنه.(شاید ظاهرا چیزی که شما واسش میفرستید با داده جدول یکی هست ولی در عمل تفاوت دارند).
داده های مربوط به شرط رو به جای اینکه خودتون تایپ کنید از جدول copy و درون تکست باکس ها ، paste کنید.
راستی داده های شرط (یعنی stagename و housetype ) شامل حروف فارسی هستند؟ (مخصوصا "ی" و "ک")

rashidi_sm
جمعه 30 فروردین 1392, 22:15 عصر
بله شامل حروف فارسی هستن، کاراکتر ی رو هم دارند

veniz2008
جمعه 30 فروردین 1392, 22:37 عصر
احتمالا مشکل بخاطر همون باشه!. کد زیر جای حروف ک و ی فارسی و عربی رو با هم عوض میکنه. اگر جواب نداد اونوقت جای "ی" ها و "ک" ها رو عوض کنید:

OleDbConnection con = new OleDbConnection(strCon);
OleDbCommand cmd = new OleDbCommand("Update wholeAction SET [stagePercentage]=@percent,[stageCost]=@cost WHERE ([stageName]=@name) AND ([houseType]=@house)", con);

MessageBox.Show(i.ToString().Trim());
MessageBox.Show(TypeHouse.Text.Trim());
cmd.Parameters.AddWithValue("@name", i.ToString().Trim().Replace("ی","ي"). Replace("ک","ك"));
cmd.Parameters.AddWithValue("@house", TypeHouse.Text.Trim().Replace("ی" ,"ي").Replace("ک","ك"));
cmd.Parameters.AddWithValue("@percent", sumDarsad[i - 1]);
cmd.Parameters.AddWithValue("@cost", costDarsad[i - 1]);

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