PDA

View Full Version : مشکل همزمانی در شبکه



yavari
چهارشنبه 08 فروردین 1386, 17:19 عصر
سلام

چجوری میتونم وقتی برنامم داره تو شبکه اجرا میشه امکان ویرایش همزمان 2 کاربرم روی یه رکورد را کنترل کنم که مشکلی پیش نیاد !
بانک اطلاعاتیم اکسسه !

ممنون :تشویق:

h_sadeghynejad
چهارشنبه 08 فروردین 1386, 17:33 عصر
به نظر من اگه بشه هم این کار رو کرد کار زیاد جالبی در نمیاد چون هر کاربر اطلاعات مربوط به خودش رو قرار میده و اگه خواسته باشن با هم یه چیز رو تغییر بدن اصلا با عقل جور در نمیاد
حالا بگو که میخوای چیکار بکنی شاید یه راه حل بهتری بشه ارائه داد

yavari
چهارشنبه 08 فروردین 1386, 17:36 عصر
سلام

صورت مساله برام خیلی مهمه!
فرض کنید حالا اینجور امکانی رو خواسته باشیم !
بیشتر دنبال راه حلم!

ممنون

h_sadeghynejad
چهارشنبه 08 فروردین 1386, 18:11 عصر
برای این کار باید بهت بگم که ما دو نوع قفل برای یک رکورد داریم
1) حالت Pessimistic (بد بینانه)
2) حالت Optimistic (خوش بینانه)
در صورتیکه خاصیت LockEdit رو برابر با مقدار True بدی برابر با اولی و در غیر این صورت برابر با دومی خواهد شد
در حالت اول وقتی متد Add New یا Edit اجرا میشه رکورد قفل شده و تا زمانی که متد Cancel یا Update اجرا نشه از حالت قفل خارج نمیشه و اگه بخوای Recordset خودتو close کنی پیغام خطا میده
اما در حالت دوم وقتی متد AddNew یا Edit اجرا میشه رکورد قفل نمیشه در عوض وقتی که متد Update اجرا میشه رکورد برای یک لحظه قفل شده و اطلاعات خودشو ذخیره میکنه اما اگه در همین بین یکی دیگه اطلاعات رو ذخیره کنه به تو پیغام خطا میده مزیت اصلی این روش اینکه توی این حالت رکورد در زمان کمتری قفل هستش در حالی که در روش اولی ممکنه که یک رکورد برای مدت زمان زیادی قفل باشه
ضمنا پیغام خطایی هم که میده با شماره 3197 هستش که میتونی با یک پیغام جلوشو بگیری و به کاربر بگی که این رکورد تغییر کرده
اگه مشکلی بود بگو
اگه هم اشتباهی توی نوشته هام بود بازم بگو
<<<<<<<<< یا علی >>>>>>>>>>

CodeMasterX
پنج شنبه 09 فروردین 1386, 04:16 صبح
h_sadeghynejad (http://barnamenevis.org/forum/member.php?u=34530) درست گفته.برای انکار باید از Cursor ها و Permission های استفاده کنی که توی همین بخش درمورد استفاده بهینه از قفل های قبلا بحث شده بگردی پیدا می کنی.در ضمن اول اینکه برای استفاده دیتابیس ای که قراره چند کاربر همزمان باهاش کار کنند اکسس رو پیشنهاد می کنم بی خیال شی چون نه امنیت درست و حسابی داره نه کارایی درست و حسابی! برو سراغ SQLServer یا اگه برنامت خیلی سنگین نیست از چیزی مثل MySQL استفاده کن.
و در آخر با این حال که جواب رو دادین ولی اون حرفتون که گفته بودین اگر هم بشه.... باید بگم که بله می شه.فقط مربوط به کد نویسی و تکنیک ها هست.استفاده از آبجکت ADO از نسخه های مختلفش و ترجیحا نسخه 2.7 ش و کمی تکنیک و دانش در کنترل داده و رکوردهای دیتابیس کافی هست.
یه چیز دیگه اینکه باید یادت باشه برای اینکه دیتابیس روی یه شبکه حالا محلی یا هرچی بخواد مورد دسترس قرار بگیره برنامه های Client باید کرسر کانکشن هاشون به adUseServer تغییر پیدا کنه.