PDA

View Full Version : سوال: Cannot insert duplicate key row in object 'dbo.Items' with unique index 'IX_Items'.



rahil_2008
جمعه 27 خرداد 1390, 01:27 صبح
سلام دوستان
من یه کد اینچنینی دارم


da.InsertCommand = cmb.GetInsertCommand();
DataRow dr = ds.Tables[0].NewRow();
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
DataRow drr = ds.Tables[0].NewRow();
drr["ItemCode"] = dataGridView1.Rows[i].Cells[0].Value.ToString();
drr["ItemName"] = dataGridView1.Rows[i].Cells[1].Value.ToString();
drr["AUnit"] = dataGridView1.Rows[i].Cells[2].Value.ToString();
drr["FUnit"] = dataGridView1.Rows[i].Cells[3].Value.ToString();
ds.Tables[0].Rows.Add(drr);
}
cnn.Open();
da.Update(ds);
cnn.Close();

و با این پیام خطا مواجه می شم:

Cannot insert duplicate key row in object 'dbo.Items' with unique index 'IX_Items'.
The statement has been terminated.
لطفا راهنمایی کنید

mehran_sh_t
جمعه 27 خرداد 1390, 02:50 صبح
آیتم های موجود در datagridview از کجا میان؟
اگر از همون table هستن که ازش دارید می خونید، خوب نمی تونید دوباره همون آیتم ها رو اضافه کنید!!!

mostafa-zare
جمعه 27 خرداد 1390, 03:00 صبح
خب شما اطلاعات رو از dbo.item می خونید و دوباره همونجا می خواید اپدیت کنید اما از where استفاده نکردید.
اگه برای دستور آپدیت از where statement استفاده نکنید، همه مقادیر داخل جدول رو آپدیت می کنه و اینحاست که می خواد یکتایی اطلاعات در جدول از بین بره؛ اما sql اجازه ادامه نمی ده.
نمیدونم منظورم رو فهمیدید یا نه، اگه نه بگید تا بیشتر توضیح بدم؟

rahil_2008
جمعه 27 خرداد 1390, 10:52 صبح
سلام دوست عزیز ممنون از توجهتون
نه راستش من نمی دونم چه جوری با where این کدو اصلاح کنم لطفا بیشتر توضیح بدین

mostafa-zare
جمعه 27 خرداد 1390, 15:00 عصر
من فرض می کنم که ItemCode کلیذ جدول باشه. where به اینصورت می شه:
where ItemCode="Value"
که این رو باید به دستور آپدیت اضافه کنید.

rahil_2008
جمعه 27 خرداد 1390, 17:04 عصر
من فرض می کنم که ItemCode کلیذ جدول باشه. where به اینصورت می شه:
where ItemCode="Value"
که این رو باید به دستور آپدیت اضافه کنید.

چه جوری این کارو بکنم؟
ببین من با sql command builder نوشتم نه با sql command
(یعنی ازم خواستن که با sql command builder بنویسم)
اون where که شما می گی فکر کنم مربوط به sql command می شه!

rahil_2008
جمعه 27 خرداد 1390, 17:07 عصر
آیتم های موجود در datagridview از کجا میان؟
اگر از همون table هستن که ازش دارید می خونید، خوب نمی تونید دوباره همون آیتم ها رو اضافه کنید!!!
خب پس من چه جوری کل دیتاگرید را دوباره تو جدول بریزم؟ می خوام کل تغییرات دیتاگرید ، یه دفعه با فشردن دکمه ذخیره سازی، تو جدول دیتابیسم اعمال بشه

mehran_sh_t
جمعه 27 خرداد 1390, 19:52 عصر
ببینید، فکر کنم مشکل شما همین باشه، که اطلاعات توی Dataset هستن، و شما دوباره همون ها رو بهش اضافه می کنید، دقت کنید که دارید update نمی کنید.
یه کاری کنید شاید درست بشه، قبل از حلقه، dataset رو خالی کنید، یعنی سطر های جدول صفر رو پاک کنید و بعد اطلاعات رو بریزید توش