PDA

View Full Version : ا2 کلید اصلی در اصلtry catch نمیتونه خطایابی رو درست انجام بده



RIG000
یک شنبه 09 مرداد 1390, 22:18 عصر
با سلام .
راسش من یکسری اطلاعات رو میخام درج کنم . که دوم قدار من نباید تکراری در بانک باشن . پس هر دو مقدار مورد نظر رو در جدول کلید اصلی pk گرفتم . از try catch هم برای مدیریت خطا استفاده کردم. کار درست انجم میشه اما موقعی که هر دومقدار متفاوت باشن . اما اگه یکی متفاوت باشه و یکی دقیقا مقداری که تو بانک هست بازهم اطلاعات مورد نظر درج میشه در صورتی که یکی مقدار جدید هست و دیگری مقداری که در یانک وجود داره پس اولی درسته و دومین مقدار ارسالی ما در بانک وجود داره /؟!!! چرا ؟ چه جوری این مشکل حل میشه؟

reza_Nazem
یک شنبه 09 مرداد 1390, 22:33 عصر
سلام
من فکر می کنم مشکلت از database باشه
از نوشته ات این جوری برداشت کردم که هر کدام از اون فیلدها به تنهایی باید خاصیت یکتا بودن را داشته باشند و شما هر دو انها را به عنوان pk انتخاب کردی

خوب اگه این طور باشه برنامه داره درست کار می کنه
باید فیلد های مورد نظر جدا جدا (نه با هم) به عنوان index انتخاب کنی البته از نوع unique .

RIG000
یک شنبه 09 مرداد 1390, 22:54 عصر
من کلا با بانک اطلاعاتی مشکل دارم . مخصوصا " sql . که اون تازه دارم یاد میگیرم. ببینید من هر دوم دیتا تایپ فیلدامو navarchar گرفتم یکی شماره مورد نظر و دیگری شماره نامه . هر دو هم کیلید هستن کد منم اینه .

try
{

SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "insert into property (raj , andik,ersalbe,etebar,eraebe,tarikh) values (@raj ,@andik,@ersalbe,@etebar,@eraebe,@tarikh)";
cmd.Parameters.Add("@raj", SqlDbType.NVarChar, 50).Value = boxraj.Text.Trim();
cmd.Parameters.Add("@andik", SqlDbType.NVarChar, 50).Value = boxandik.Text.Trim();
cmd.Parameters.Add("@ersalbe", SqlDbType.NVarChar, 50).Value = boxersalbe.Text.Trim();
cmd.Parameters.Add("@etebar", SqlDbType.NVarChar, 50).Value = boxetebartatarikh.Text.Trim();
cmd.Parameters.Add("@eraebe", SqlDbType.NVarChar, 50).Value = boxeraebe.Text.Trim();
cmd.Parameters.Add("@tarikh", SqlDbType.NVarChar, 50).Value = boxmask.Text.Trim();
con.Open();
cmd.ExecuteNonQuery();

MessageBox.Show("One Rows Affected Successfully...", "Save to ..", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
// frmreprt rp = new frmreprt();
this.SelectedString = boxandik.Text.Trim();
this.SelectedString1 = boxersalbe.Text.Trim();
this.SelectedString2 = boxetebartatarikh.Text.Trim();
this.SelectedString3 = boxeraebe.Text.Trim();
this.SelectedString4 = boxreisamozesh.Text.Trim();

showGrid();
Close();


}
catch (Exception ex) { MessageBox.Show(ex.Message); }
finally
{
con.Close();
}


در شمن من موقعی که با برنامه کار میکنم و اجرا میگیرم مشکلی نیست حالا من بخام برم برنامه sql رو اجرا کنم و برم داخل بانکم و جدولی رو زیاد یا کم و ... کنم . و موقعی که برگردم دو باره رو برنامه و اجرا f5 بگیرم ارور باز کردن کانکشن میده و اینجوری حتما باید کامیوتر رو ریست کنم . ؟!!!!!!! access اینجوری نبود.

Connot open user defult database.loginfaild. loginfilad user amin\adminastratpr
در ضمن من از sql2005 exprees استفاده میکنم باید کدوم زیان رو انتخاب کنم؟ arabic.....????

RIG000
یک شنبه 09 مرداد 1390, 22:55 عصر
سلام
من فکر می کنم مشکلت از database باشه
از نوشته ات این جوری برداشت کردم که هر کدام از اون فیلدها به تنهایی باید خاصیت یکتا بودن را داشته باشند و شما هر دو انها را به عنوان pk انتخاب کردی

خوب اگه این طور باشه برنامه داره درست کار می کنه
باید فیلد های مورد نظر جدا جدا (نه با هم) به عنوان index انتخاب کنی البته از نوع unique .
اینو نگرفتم چی شد؟!!
باید فیلد های مورد نظر جدا جدا (نه با هم) به عنوان index انتخاب کنی البته از نوع unique .[/QUOTE]

RIG000
دوشنبه 10 مرداد 1390, 00:11 صبح
کسی نبود؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟

ma.rad
دوشنبه 10 مرداد 1390, 00:25 صبح
سلام دوست عزیز
شما با چه روشی دو فیلد برای کلید مشخص کردید؟

RIG000
دوشنبه 10 مرداد 1390, 00:38 صبح
روشی نداره که ! همون praymery key خودمون دیگه //// pk جفتشم کلید کردم حالا باید هر دو بررسی شه که نمیشه !!! موندم چه کنم.

ma.rad
دوشنبه 10 مرداد 1390, 00:58 صبح
پس برنامه شما درست کار میکنه-وزمانی درج نمی کنه که هر دوی اون ها یکی باشن

ma.rad
دوشنبه 10 مرداد 1390, 01:08 صبح
اگر میخواید یکی یکی چک کنه همونطور که دوستمون گفتن تغییرات رو اعمال کنید:

73155

RIG000
دوشنبه 10 مرداد 1390, 09:57 صبح
73160واسه من اینجوریه !!! در حالت اولیه بعدش اون قسمتی که میگید عیر فعال هست . همونایی که نوشته . من الان چیکار کنم؟

RIG000
دوشنبه 10 مرداد 1390, 09:58 صبح
به دیتا تایپ ها ربطی نداره؟!!!!!

reza_Nazem
سه شنبه 11 مرداد 1390, 23:41 عصر
سلام
ابتدا بیاید pk رو delete کنی ، بعد insert رو بزن (تو همون فرم index) بعدش هم که دوستان توضیح دادند
در ضمن جدولت کلید درست حسابی نداره