heivin
چهارشنبه 01 مهر 1388, 01:15 صبح
یه دکمه برای درج یک رکورد دارم که در رویداد کلیکش این کدهارو نوشتم:
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 مدیریت کرده ام. مشکلم اینجاست که بعد از اینکه کاربر مقدار تکراری وارد کرد پیغام "قبلا ثبت گردیده است" نشون داده میشه و پشت سرش پیغام "حساب کل با موفقیت ثبت گردید". من میخوام بعد از رخ دادن خطا پیغام "حساب کل با موفقیت ثبت گردید" نشون داده نشه
تشکر
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 مدیریت کرده ام. مشکلم اینجاست که بعد از اینکه کاربر مقدار تکراری وارد کرد پیغام "قبلا ثبت گردیده است" نشون داده میشه و پشت سرش پیغام "حساب کل با موفقیت ثبت گردید". من میخوام بعد از رخ دادن خطا پیغام "حساب کل با موفقیت ثبت گردید" نشون داده نشه
تشکر