نوشته شده توسط
khaste_007
با سلام
در مورد مشکل اول باید بگم کارهای زیادی میتونی انجام بدی من به دو مورد اشاره می کنم.
1. قبل از ثبت با یک کوئری primary key دانشجوی جدید رو سرچ کنی و اگر موجود بود ثبت نکنی و پیغام را نشان دهی.
2 . استفاده از Try...Catch ؛ که شما رویه ثبت رو در بلوک try و رویه نمایش پیغام خطا رو در قست catch قرار می دهی و بر حسب اینکه چه خطایی رخ داده پیغام مناسب رو نشان می دی که این راه حل بر راه اول اولویت دارد
برای مطالعه بیشتر در این رابطه می توانی در مورد Try...Catch...Finally در همین سایت سرچ کنی یا اطلاعات کامل رو از سایت مایکروسافت در آدرس زیر مطالعه کنی
http://msdn.microsoft.com/en-us/library/0yd65esw(VS.80).aspx
و اما مشکل دوم به احتمال زیاد شما در پیاده سازی کدتون اشتباه کردید که ما تا کد شما رو نداشته باشیم نمی تونیم نظر قطعی بدیم ولی اینگونه اشتباهات معمولا بر اثر کپی پیست به وجود میاد یعنی شما کدی رو چند جا کپی کردید یکجا تغییر و اصلاح کرده اید ولی جاهای دیگر را فراموش کردید به هر حال باید برای اینکار برنامه را تریس کنید و در نقاط حساس مثل زمان حذف و زمان ثبت مجدد و بستن برنامه و ... بانک اطلاعات و منابع سیستم رو چک کنید . حتی ممکن هست که برای بار دوم که ثبت می کنید ثبت شده باشد ولی مثلا DataGridView رو refresh نکرده باشید.
موفق باشید.
سلام دوست عزیز
مشکل اول حل شد . من از try و catch استفاده کرده بودم . اما یادم رفته بود به جای massage پیغامی که دوست دارم را بزارم .
اما مشکل دوم را نمیدونم چه طور حل کنم . یعنی وقتی پیغام داده می شه که چنین شماره ای قبلا ثبت شده . وقتی کاربر ID را ویرایش میکنه دوباره همون پیغام را میده که چنین شماره ای قبلا ثبت شده و اصلا اطلاعات جدید ثبت نمی شه .
این هم کی که برای دکمه insert نوشتم .
private void btnInsert_Click(object sender, EventArgs e)
{
try
{
string str1;
str1 = "INSERT INTO TBook(Name, ID, Number) VALUES(@Name, @ID, @Number)";
con.Open();
cmd = new SqlCommand(str1, con);
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 50).Value = txtName.Text;
cmd.Parameters.Add("@ID", SqlDbType.NVarChar, 50).Value = txtID.Text;
cmd.Parameters.Add("@Number", SqlDbType.NVarChar, 50).Value = txtNumber.Text;
cmd.ExecuteNonQuery();
ds.Clear();
da.Fill(ds, "TBook");
con.Close();
MessageBox.Show("اطلاعات با موفقیت ثبت شد");
}
catch (System.Exception)
{
MessageBox.Show("این شماره دانشجویی قبلا ثبت شده است");
}
}