PDA

View Full Version : سوال: کنترل مانده کالائی



Alyas_Tet
یک شنبه 02 تیر 1387, 14:22 عصر
سلام .
فرض کنیم که توی انبار یک کالائی داریم که مجاز نیستیم بیشتر از مانده کالا فروشی داشته باشیم . حالا اگر یه کاربر بخواد که یه فروش رو ثبت کنه که مانده کالا کافی باشه و در همون لحظه کاربر دیگه هم همین کار رو بخواد انجام بده اگر کاربر دوم زودتر از کاربر اول ثبت رو انجام بده اونوقت تکلیف چیه . چون کاربر اول میدونه که مقدار کافیه و نمیدونه که کاربر دیگه ای زودتر این کار رو انجام داده و دیگه مانده کالا کافی نیست . حالا اگر بخوام که دوباره قبل از ثبت یه بار دیگه مانده کالا رو چک کنم این ممکنه که برای کاربر خیلی جالب نباشه . میخوام بدونم که در این مواقع راه حل درست چیه . دیتابیس من هم اس کیو ال سرور 2000 هستش .
ممنون از همه .

babak_delphi
یک شنبه 02 تیر 1387, 14:42 عصر
شما باید کنترل نهایی را در زمان ثبت مثلا در کلیکِ دکمهء ثبت انجام دهید

vcldeveloper
یک شنبه 02 تیر 1387, 17:34 عصر
اگر از مقدار ltPessimistic برای خصوصیت LockType استفاده کنید، اولین کاربری که رکورد مربوط به مانده کالا را ویرایش می کند (مثلا مقداری از آن کسر می کند)، رکورد را قفل کرده و اجازه ویرایش به سایر کاربران نمی دهد. در نتیجه سایر کاربرانی که بخواهند همان رکورد را بطور همزمان ویرایش کنند (مثلا مقداری از آن کسر کنند) پیام خطا دریافت می کنند و باید ابتدا مقدار جدید رکورد را از بانک دریافت کرده و سپس درخواست ویرایش کنند. در این صورت، اگر کاربر اول تمام موجودی کالا را استفاده کرده باشد، کاربر دوم ابتدا خطا دریافت می کند و سپس با دریافت مجدد اطلاعات رکورد مربوطه از بانک، متوجه می شود که مقدار موجودی صفر شده است. درباره LockType قبلا بحث شده، جستجو کنید.
راه حل دوم هم این هست که نرم افزار بصورت چند لایه طراحی بشه و کنترل موجودی کالا توسط لایه Business Logic کنترل بشه. درباره برنامه های چند لایه (بطور خاص 3-لایه) قبلا بحث کردیم. می تونید عباراتی مثل 3-لایه، DataSnap, Midas, multi-tier, یا 3-tier را در سایت جستجو کنید.