View Full Version : قفل کردن یک رکود یا مجموعه آنها
Mahnazmh
پنج شنبه 25 فروردین 1384, 09:27 صبح
سلام
خسته نباشید
من جهت اینکه ممکن با یک تیبل دو نفر کار کنند و هر دو در حال ویرایش باشند ممکن است هردو روی یک رکورد کار کنند و ویرایش یکی از آنها از بین برود حالا قفل کردن یک رکود یا مجموعه از آنها از این موضوع جلوگیر می کند
قفل خوش بینانه و بد بینانه که من از کتاب خوندم ولی مثالی تو این زمینه نبود
اگه لطف کنید و در تمام موردی که در این زمینه پیش میاد بحث کنید هم مفید برای همه و هم من ممنون می شوم
:thnx:
بابک زواری
پنج شنبه 25 فروردین 1384, 09:37 صبح
خانم Mahnazmh
اگر شما از بانک SQL Server استفاده میکنید که خیلی از امور توسط اون اتوماتیک
انجام میشه .
اما اگر بانکتون Access هست هم این انتخاب جالبی نیست و هم یک مقدار کاراتون
و کنترل ها رو خودتون باید انجام بدید.
حالا شما بفرمائید که بانکتون چی هست منم ببینم تو سورسهام چی دارم که
براتون بذارم اینجا
titbasoft
پنج شنبه 25 فروردین 1384, 10:00 صبح
recordSet مشخصه ای به نام LockType داره که مقادیر آن به صورت یکی از Enumeration های زیر ست میشه و باعث میشه در بازه های زمانی زیر دیتا ها فقط در دسترس کسی که اونها رو lock کرده باشن
1) adLockReadOnly : رکورد ها اصلا قفل نمی شوند
2) adLockPessimistic : از زمان خواندن تا صدور دستور update
3) adLockOptimistic : فقط زمان update
4) adLockBatchOptimistic : زمان batch update
اطلاعات تکمیلی: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/his/htm/_sna_locktype_property_oledb.asp
البته روی بعضی از DBMS ها ممکنه تنظیمات server - side روی آن تاثیر بزاره مثل زمانی که Isolation level برای SQL مشخص میشه
Mahnazmh
پنج شنبه 25 فروردین 1384, 10:35 صبح
آقای برنامه نویس و
ممنون
دیتا بیس من اسکیوال سرور است
آیا اصلا نیاز به کنترول در این دیتا بیس هست یا نه
ممنون
:flower: :flower: :flower:
Behrouz_Rad
پنج شنبه 25 فروردین 1384, 11:45 صبح
در تمامی DBMS هایی که به وسیله VB با اونها ارتباط برقرار میشه، نیاز به تعیین نوع قفل گذاری و نوع دسترسی به رکوردهاست.
بهترین و بیشترین حالت مورد استفاده در ایجاد یک Recordset ویرایشی، استفاده از کرسر adOpenKeyset و قفل adLockOptimistic می باشد.
titbasoft
پنج شنبه 25 فروردین 1384, 12:11 عصر
آیا اصلا نیاز به کنترول در این دیتا بیس هستاین مساله در ارتباط مستقیم با طراحی شما است. همیشه گذاشتن lock روی دیتا مناسب نیست و همیشه هم نمی شه از آن صرف نظر کرد. برای مثال به 2 سناریو زیر توجه کنید:
1) ویرایش اطلاعات کاربری : مصلما lock کردن دیتا ها در این قسمت کار اشتباهی است چون هر کسی فقط به اطلاعات خودش دسترسی داره و این امکان وجود نخواهد داشت که دو کاربر به طور همزمان به یک رکورد دسترسی پیدا کنند. حتی گذاشتن lock روی این دیتا ها ممکنه به علت اینکه سیستم به طور مستمر داره از اونها استفاده می کنه موجب پدیده deadlocking هم بشه
2) برداشت از حساب: اگر در هنگام خواندن رکورد موجودی dirty read داشته باشید به این معنا که کس دیگری این رکورد را خوانده و lock نکرده و شما هم آن را می خوانید و lock نمی کنید سپس شخص اول می تونه موجودی حساب شما را کاهش بده در حالی که اکنون مبلغی که شما به عنوان موجودی خوندید مبلغ نادرستیه ، موجب اشتباهات عملیاتی خواهد شد.
Mahnazmh
چهارشنبه 31 فروردین 1384, 10:27 صبح
با تشکر از دوستان گرامی
که من کمک می کنن
من یک تیبل با یک فیلد را دارم
که قرار است دو نفر آن را ویرایش کنند نحوه قفل گذاشتن روی آن چگونه باشد تا هم اطلاعات از بین نرود و هم کار بر ها به کاری که می کنن مسلط باشند
ممنون
اگه کسی نمونه کدی داره برام بفرسته ممنون
:flower: :flower: :flower: :flower: :flower: :flower:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.