نمایش نتایج 1 تا 4 از 4

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

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    asus-f3jr
    سن
    41
    پست
    89

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

    یه دکمه برای درج یک رکورد دارم که در رویداد کلیکش این کدهارو نوشتم:
    myKol.InsKol(Convert.ToInt32(txtCode.Text.Trim()), cmbType.Text.Trim(), txtName.Text.Trim());
    MessageBox.Show("حساب کل با موفقیت ثبت گردید", "اطلاع رسانی",
    MessageBoxButtons.OK,MessageBoxIcon.Information);

    myKol.InsKol() به این صورته:
    internal void InsKol(int Code, string Type, string Name)
    {
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "InsKol";
    cmd.Parameters.AddWithValue("@Code", Code);
    cmd.Parameters.AddWithValue("@Type", Type);
    cmd.Parameters.AddWithValue("@Name", Name);
    dbRun myDbRun = new dbRun();
    myDbRun.ExecCommand(cmd);
    }

    myDbRun.ExecCommand(ConStr) هم به این صورته:
    public void ExecCommand(SqlCommand mycmd)
    {
    try
    {
    mycmd.Connection = myCn;
    if (myCn.State == ConnectionState.Closed)
    myCn.Open();
    try
    {
    mycmd.ExecuteNonQuery();
    }
    catch (SqlException sqle)
    {
    if (sqle.Number == 2627)
    {
    MessageBox.Show("قبلا ثبت گردیده است"+sqle.Message, "خطا", MessageBoxButtons.OK,
    MessageBoxIcon.Error);
    }

    else
    MessageBox.Show("خطا در بانک اطلاعاتی1: " + sqle.Message, "خطا",
    MessageBoxButtons.OK,
    MessageBoxIcon.Error);
    }
    myCn.Close();
    myCn.Dispose();
    }
    catch (SqlException se)
    {
    MessageBox.Show("خطا در بانک اطلاعاتی2: " + se.Message, "خطا", MessageBoxButtons.OK,
    MessageBoxIcon.Error);
    }
    }

    حال اگه یک مقدار تکراری وارد بشه خطای شماره 2627 رخ خواهد داد.که اونو تو myDbRun.ExecCommand مدیریت کرده ام. مشکلم اینجاست که بعد از اینکه کاربر مقدار تکراری وارد کرد پیغام "قبلا ثبت گردیده است" نشون داده میشه و پشت سرش پیغام "حساب کل با موفقیت ثبت گردید". من میخوام بعد از رخ دادن خطا پیغام "حساب کل با موفقیت ثبت گردید" نشون داده نشه
    تشکر

  2. #2
    کاربر دائمی آواتار atryad
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    شیراز
    پست
    255

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

    با سلام
    دوست عزیز میتونی خروجی تابع public void ExecCommand یه bool بگیری که در صورت اینکه هر کدوم از try ها خطا پیدا کرد و به cash منتقل شد مقدار false رو برگردونه وبرای نشان دادن پیغام "حساب کل با موفقیت ثبت شد" خروجی تابع رو چک کنید

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    asus-f3jr
    سن
    41
    پست
    89

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

    اما آیا این یک روش معمول و استانداردیه؟ یعنی این کار اصولیه؟

  4. #4
    کاربر دائمی آواتار atryad
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    شیراز
    پست
    255

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

    نقل قول نوشته شده توسط heivin مشاهده تاپیک
    اما آیا این یک روش معمول و استانداردیه؟ یعنی این کار اصولیه؟
    آره چرا استاندارد نیست
    وقتی که تابع رو صدا میزنی خروجی اونو چک میکنی این اصل کار برنامه نویسی است
    مثل اینکه شما از یه نفر بخوای که یه کار رو براتون انجام بده حالا اگه نتیجه کار براتون مهم باشه جواب رو بهتون برمی گردونی اگه هم که مهم نباشه جوابی بهتون بر نمی گردونه"به قول استادمون"

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •