PDA

View Full Version : سوال: خطا هنگام Update بانک SQL



Ali0Boy
سه شنبه 20 تیر 1391, 14:37 عصر
باسلام. در کدهای زیر که مشاهده می کنید، هنگام update بانک اطلاعاتی، با خطای زیر مواجه شدم.
خطا:


Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.


کد ADD:


blnAdd = true; tbl_rememberBindingSource.CancelEdit(); tbl_rememberBindingSource.AddNew(); btnAdd.Enabled = false; expDateTime.SetTodayDate(DateTime.Now); subjectTextBox.Focus();
cmbTmH.SelectedIndex = DateTime.Now.Hour; cmbTmM.SelectedIndex = DateTime.Now.Minute; withmp3CheckBox.Checked = false;


کد Update:


if (tbl_rememberBindingSource.Position == -1) { return; }
if (subjectTextBox.Text.Trim() == "" || memoTextBox.Text.Trim() == "" || (withmp3CheckBox.Checked == true && addrmp3TextBox.Text == "")) { MessageBox.Show("لطفا فرم را کامل پر کنید", "پیغام"); return; }
btnAdd.Enabled = true; blnAdd = false;
tbl_rememberDataGridView.CurrentRow.Cells[3].Value = expDateTime.SelectedDateInStringPersian;
tbl_rememberDataGridView.CurrentRow.Cells[4].Value = cmbTmH.Text + ":" + cmbTmM.Text;
tbl_rememberBindingSource.EndEdit();
tbl_rememberTableAdapter.Update(simurgh_dbDataSet. tbl_remember);


دوستان توجه کنید، هنگام اضافه کردن رکورد جدید و ذخیره آن خطایی رخ نمی دهد اما هنگامی که رکوردی را ویرایش و می خواهیم ذخیره کنیم خطا رخ می دهد. علت آن چیست ؟!!!
خطا در خط 7 کد update رخ می دهد.

gwbasic
سه شنبه 20 تیر 1391, 15:40 عصر
خطا احتمالا به این دلیل است که رکوردی با کلید اصلی تکراری می خواهد ایجاد شود و دلیل آن هم به این برمی گرده که DataSet و DataTable تغییرات روی رکوردها رو بدرستی تشخیص نمی دهد.
یک راهی که می تونید امتحان کنید اینه که قبل از پر کردن DataTable اون رو Clear کنید.

Ali0Boy
سه شنبه 20 تیر 1391, 15:44 عصر
ممنون آقای gwbasic (http://barnamenevis.org/member.php?25140-gwbasic)، نه مشکلم از این ها نبود، مشکل من این بود که در simurgh_dbDataSet.xsd اومده بودم table-ای را اضافه کرده بودم و بعد از آن داخل بانک یکی از فیلد های این Table را حذف کرده بودم ولی اینجا یادم رفته بود که درستش کنم. حالا با چند بار تست کردن قسمت های مختلف پیداش کردم و درستش کردم.

باتشکر مشکل حل شد.