PDA

View Full Version : سوال: قفل کردن رکورد



hooooman
شنبه 13 مهر 1387, 13:08 عصر
سلام

اولش بگم علت پرسیدن این سوال تو بخش VB.NET بخاطر اینه که من مشکلم تو سطح Application هست.

دوستان تورو خدا یکی منو راهنمایی کنه:
من 2 تا جدول دارم حالت Header و detail . با 1 select با حالت nolock کل روکوردهاشو میریزم توی 1 Datagridview . حالا میخام وقتی کاربر روی یکی از ردیفهاش Enter میزنه اون رکورد قفل بشه و از دسترس کاربرای دیگه خارج بشه . میخام ببینم چه Sp بنویسم که اینکارو برام انجام بده من توی این مطلب خیلی گنگم . این جدول 1 فیلد id بصورت Identity داره که من اونو تو شرط Where توی query دومی میذارم .این query رو مینویسم ولی اشکال میگیره میگه Commit یا rollback بعد از سلکت وجود نداره:



begin tran
select * from TABLE1 with (xlock) where id=XX


وبعدش با 1 Query دیگه رکوردای مرتبط جدول Detail رو ببرم برا ویرایش و وقتی ویرایش تموم شد دوباره اون رکوردو از حالت ویرایش خارج کنم . ضمنا اینم بگم که حتما باید اون رمورد قفل بشه و از دسترس بقیه کاربرا خارج بشه.

singel
شنبه 13 مهر 1387, 14:45 عصر
سلام عزیزم
یه روش خیلی ساده هست که میتونی استفاده کنی که شاید خیلی مسخره بیاد ولی بعضی مواقع خیلی کارسازه
یه فیلد به دیتا بیست اضافه کن که یک مقدار یک حرفی بگیره
با تعریف کد داخل برنامت وقتی کاربر روی اون رکورد اینتر زد بعنوان مثال اون فیلد مقدارش عدد یک بشه و بقیه کاربرها لیست فیلد های مخالف عدد یک رو ببینن یا ویرایش کنن.
موفق باشی .

علیرضا مداح
شنبه 13 مهر 1387, 18:13 عصر
سلام دوست عزیز،
http://www.learnvisualstudio.net/content/videos/2471_optimistic_concurrency.aspx