PDA

View Full Version : سوال: ارور همزمانی در ویرایش دیتا بیس Concurrency violation



hadgph
چهارشنبه 08 شهریور 1391, 20:08 عصر
سلام دوستان
من به کمک binding داده هام رو به دیتابیس اکسس متصل کردم، و به کمک خواص ویرایشی همین binding ها مث آپ دیت و ادد و ... داده هام رو مدیریت میکنم، تا اینجا همه چی خوبه، ولی موقعی که یه رکورد جدید رو اضافه میکنم و بعد میخوام حذفش کنم این اروور رو می ده

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

موقع ویرایش این رکورد هم مشابه این ارور رو میده

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

چن روزه درگیرشم و نتونستم رفعش کنم، خواهشا اگه دوستان این مشکل رو قبلا داشتن یا راه حلش رو می دونن راهنمایی کنن .

Samsam2010
پنج شنبه 09 شهریور 1391, 07:40 صبح
البته در حالت کلی این پیام

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

زمانی رخ میده که یا سطر وجود خارجی نداره یا اینکه در where شرطت مورد داره

اما من چیز دیگه ای هم حدس میزنم !البته نمیدونم چقدر درست باشه
شما از این کد برای آپدیت استفاده کردی ؟(مثلا)
da.Update(ds, "Workers")
اگر آره به این شکل تغییرش بده
Dim dRowUp As DataRow = ds.Tables("Workers").Rows(i)
dRowUp(1) = textBox1.Text
dRowUp(2) = textBox2.Text
dRowUp(3) = textBox3.Text
da.Update(ds1, "Workers")

یعنی چی ؟ یعنی هر سطرت ستون هم داره ستون هاشو مقدار دهی بکن بعد ذخیره کن
اگر هم خواستی سورس بزار نگاهی بندازیم

hadgph
پنج شنبه 09 شهریور 1391, 11:04 صبح
ممنون از توجه تون
من نمونه کدی که استفاده کردم رو در فایل ضمیه براتون میارم، همون ارور رو میده
بیبیند می تونید راه حلی براش پیدا کنید

Samsam2010
پنج شنبه 09 شهریور 1391, 21:30 عصر
با سلام
دوست من شما این ویدئو آموزشی رو که برات درست کردم نگاه کن ، امیدوارم مشکلت حل بشه

Download (http://daranet.ir/files/db_wizard.rar)

FastCode
جمعه 10 شهریور 1391, 00:19 صبح
این خطا چقدر رخ میده؟چند تا client دارید و یکم از کدتون رو لطفاً بزارید اینجا

hadgph
جمعه 10 شهریور 1391, 13:20 عصر
با سلام
دوست من شما این ویدئو آموزشی رو که برات درست کردم نگاه کن ، امیدوارم مشکلت حل بشه

Download (http://daranet.ir/files/db_wizard.rar)


ممنون ولی به همین روش هم عمل میکنم مشکل من پا برجاست! البته از وِیژوال استدیو 2008 و فریم ورک 2.0 استفاده می کنم ، هنگام ساختن BindingNavigator کد ذخیره کردن رو با کد نویسی به برنامه می دم. شبیه کدهای ادد و دلیت.

ارور زمانی اتفاق می افته که من یه سطری رو تازه ایجاد کردم( قبل از بستن برنامه ) بخوام حذف یا ویرایش کنم! ( اگه آی دی رو دستی نزنید، بزارید اتوماتیک انتخاب بشه) ظاهرا دیتاست یه جایی می لنگه که نمی تونم درک کنم کجا. به این شکل که آی دی که انتخاب می کنه توی دیتابیس به شکل دیگه ای ذخیره می شه یا یه همچین چیزی! اینو بعد از اینکه برنامه ری استارت می کنیم متوجه میشیم!

hadgph
جمعه 10 شهریور 1391, 13:22 عصر
این خطا چقدر رخ میده؟چند تا client دارید و یکم از کدتون رو لطفاً بزارید اینجا

عرض کردم که خطا هنگام حذف و ویرایش سطر جدید رخ میده! نمونه کدی که استفاده کردم رو در کامنت 3 آوردم. یه نگاهی بهش بیاندازین ممنون میشم.

FastCode
جمعه 10 شهریور 1391, 13:41 عصر
این خطا چقدر رخ میده؟عرض کردم که خطا هنگام حذف و ویرایش سطر جدید رخ میدهمنظورم تعداد خطا بود
جوابهاش ایناست:
هر بار
یکی در میان
دو تا در میان
۱۰ تا در میان
۱۰۰
۱۰۰۰
۱۰۰۰۰
سالی یک بار
فقط دو بار اتفاق افتاده
....


نمونه کدی که استفاده کردم رو در کامنت 3 آوردم



Dim dRowUp As DataRow = ds.Tables("Workers").Rows(i)
dRowUp(1) = textBox1.Text
dRowUp(2) = textBox2.Text
dRowUp(3) = textBox3.Text
da.Update(ds1, "Workers")

لطفاً کد اصلی رو بزارید نه این رو.
کسی کد شما رو نمیخوره و بهش نمیخنده/کسایی که این تاپیک رو خوندن میخواستن به شما کمک کنن

چند تا client دارید ؟؟

hadgph
جمعه 10 شهریور 1391, 13:48 عصر
لطفاً کد اصلی رو بزارید نه این رو.
کسی کد شما رو نمیخوره و بهش نمیخنده/کسایی که این تاپیک رو خوندن میخواستن به شما کمک کنن
؟؟

عزیز دلم ! کد رو گذاشتم ! کامنت "3# (http://barnamenevis.org/showthread.php?358675-%D8%A7%D8%B1%D9%88%D8%B1-%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86%DB%8C-%D8%AF%D8%B1-%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4-%D8%AF%DB%8C%D8%AA%D8%A7-%D8%A8%DB%8C%D8%B3-Concurrency-violation&p=1582108&viewfull=1#post1582108)" نه دو ! دانلودش کنید متوجه می شین

hadgph
یک شنبه 12 شهریور 1391, 12:13 عصر
دوستان! راه حلی به ذهنتون نرسید!
الان دقیق یه هفته اس با این مشکل دس و پنجه نرم می کنم!راهکارهایی هم تو اینترنت هست این مشکل رو مرتفع نمی کنن!

FastCode
یک شنبه 12 شهریور 1391, 12:58 عصر
یک ساعت نوشتم پاک شد
خلاصش:
OLEDB چند ساله(فکر کنم بیشتر از یک دهه) که از رده خارج شده و فقط برای compatibility و migration ارايه میشه
اگر مجبورید از OLEDB استفاده کنید, از rowset concurrency model ه pessimistic استفاده کنید.(فکر نمیکنم توی .NET اصلاً ارائه بشه)
در غیر این صورت از ODBC استفاده کنید