PDA

View Full Version : سوال: رفع نشدن اخطار تا نبستن فرم مربوطه



علی فتحی
دوشنبه 09 شهریور 1394, 17:32 عصر
سلام . من برای ثبت و ویرایش از یک باتن استفاده کردم ولی ایرادی که داره هنگام ویرایش اطلاعات اگر اطلاعات ویرایش نشه و مورد داشته باشه اخرین اخطار نشون داده میشه .
catch (Exception)
{
MessageBox.Show("موارد را درست وارد کنید" );


}

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


try
{
{
if (buttonX1.Text == "ثبت")
{
if (db.Table3.Any(item => item.shh == textBoxX4.Text))
{
MessageBox.Show("شماره حواله تکراريست");
return;
}
Table3 f = new Table3();
f.kod = int.Parse(textBoxX1.Text);
f.shh = textBoxX4.Text;
db.Table3.AddObject(f);
db.SaveChanges();
Form5_Load(sender, e);
textBoxX4.Focus();
clear();
}
else if (buttonX1.Text == "ویرایش")
{
int m = int.Parse(dataGridViewX1.CurrentRow.Cells[0].Value.ToString());
var Qedit = db.Table3.Where(c => c.id == m).First();
Qedit.kod = int.Parse(textBoxX1.Text);
Qedit.shh = textBoxX4.Text;
db.SaveChanges();
Form5_Load(sender, e);
buttonX1.Text = "ثبت";
clear();
}
}
}
catch (Exception)
{
MessageBox.Show("موارد را درست وارد کنید" );

}

juza66
دوشنبه 09 شهریور 1394, 18:53 عصر
کانکشنت رو بعد از خطا ببند

con.close()

علی فتحی
دوشنبه 09 شهریور 1394, 23:32 عصر
دوست عزیز ممنون از جوابتون . کدهارو که دیدی از ef.استفاده کردم بانکو نمیشه بست. دوما چه ربطی به باز بودن بانک داره ؟

ahmadreza.s
دوشنبه 09 شهریور 1394, 23:38 عصر
سلام کد catch رو اینجوری بزار بعد متن خطا رو اینجا بزار :

catch(Exception ex){
MessageBox.Show(ex.toString());
{

علی فتحی
سه شنبه 10 شهریور 1394, 08:43 صبح
نه جواب نداد .اقا احمد رضا کد شما با مال من فرقی که نداره

محمد رضا فاتحی
سه شنبه 10 شهریور 1394, 08:55 صبح
منظور آقا احمد رضا این بود که متن خطا رو می تونی با این کد ببینی که چه خطایی می ده...اونو بفرستید شاید بهتر بشه نتیجه گیری کرد...

ژیار رحیمی
سه شنبه 10 شهریور 1394, 09:16 صبح
سلام . من برای ثبت و ویرایش از یک باتن استفاده کردم ولی ایرادی که داره هنگام ویرایش اطلاعات اگر اطلاعات ویرایش نشه و مورد داشته باشه اخرین اخطار نشون داده میشه .
catch (Exception)
{
MessageBox.Show("موارد را درست وارد کنید" );


}

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


try
{
{
if (buttonX1.Text == "ثبت")
{
if (db.Table3.Any(item => item.shh == textBoxX4.Text))
{
MessageBox.Show("شماره حواله تکراريست");
return;
}
Table3 f = new Table3();
f.kod = int.Parse(textBoxX1.Text);
f.shh = textBoxX4.Text;
db.Table3.AddObject(f);
db.SaveChanges();
Form5_Load(sender, e);
textBoxX4.Focus();
clear();
}
else if (buttonX1.Text == "ویرایش")
{
int m = int.Parse(dataGridViewX1.CurrentRow.Cells[0].Value.ToString());
var Qedit = db.Table3.Where(c => c.id == m).First();
Qedit.kod = int.Parse(textBoxX1.Text);
Qedit.shh = textBoxX4.Text;
db.SaveChanges();
Form5_Load(sender, e);
buttonX1.Text = "ثبت";
clear();
}
}
}
catch (Exception)
{
MessageBox.Show("موارد را درست وارد کنید" );

}

سلام بهتره به جای مقایسه متن button از یه فیلد boolean برای مد حالت درج یا و یرایش استفاده کنی ومن اینجور مواقع ار try برای کل قسمت استفاده نمیکنم چون وقتی داریم دستی کدها رو error هندلینگ میکنیم لازم نیست در صورتی که خطا هم داده شود در قسمت SaveChanges رو در try catch قرار بده اونم خارج از if else چون در هر صورت این خط از کد باید اجرا بشه.احتمالا از شرط داخل if باشه یا اینکه کل کد رو داخل try قرار دادی از این دو حالت بیشتر نیست.داخل try یه {} اضافه هم گذاشتی بردار