PDA

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



Saeid59_m
سه شنبه 08 آبان 1386, 09:33 صبح
سلام دوستان
بانک اطلاعاتی SQL SERVER 2000

1- فرض کنید یک جدول حاوی نام کالا و آخرین موجودی آن و یک جدول جهت فاکتور فروش و خرید داریم . می خواهیم با هر خرید یا فروش فیلد مربوط به موجودی کالا در جدول اول کم یا زیاد شود .
در این شرایط با ثبت فاکتور چه رکورد هایی باید قفل شوند .

2- زمانی که فاکتوری در حال افزوده شدن است معمولاً شماره فاکتور در بالای فرم نمایش داده می شود . حال اگر کاربر دیگری در همین زمان اقدام به ثبت فاکتور نماید . دو فاکتور با یک شماره خواهیم داشت . که مشکل ایجاد می کند . در این رابطه به چه صورت عمل کنیم .


ممنون

farhad110
سه شنبه 08 آبان 1386, 17:27 عصر
- فرض کنید یک جدول حاوی نام کالا و آخرین موجودی آن و یک جدول جهت فاکتور فروش و خرید داریم . می خواهیم با هر خرید یا فروش فیلد مربوط به موجودی کالا در جدول اول کم یا زیاد شود .
در این شرایط با ثبت فاکتور چه رکورد هایی باید قفل شوند

با سلام. به نظر من برای این مورد اگر به جای قفل کردن رکورد از transction استفاده کنید بهتر باشه. اینطوری موجودی زمانی تغییر میکنه که فاکتور با موفقیت صادر شده باشه


زمانی که فاکتوری در حال افزوده شدن است معمولاً شماره فاکتور در بالای فرم نمایش داده می شود . حال اگر کاربر دیگری در همین زمان اقدام به ثبت فاکتور نماید . دو فاکتور با یک شماره خواهیم داشت . که مشکل ایجاد می کند . در این رابطه به چه صورت عمل کنیم

در before insert یا before post دوباره شما ره فاکتور چک بشه که این کار کمی هزینه بر هست. روش بهتر اینه که محاسبه شماره فاکتور فقط زمان ورود اطلاعات صورت بگیره (چون معمولا کاربر نیازی به شماره هنگام وارد کردن داده ها نداره)

SYNDROME
سه شنبه 08 آبان 1386, 17:56 عصر
[quote=Saeid59_m;414271
2- زمانی که فاکتوری در حال افزوده شدن است معمولاً شماره فاکتور در بالای فرم نمایش داده می شود . حال اگر کاربر دیگری در همین زمان اقدام به ثبت فاکتور نماید . دو فاکتور با یک شماره خواهیم داشت . که مشکل ایجاد می کند . در این رابطه به چه صورت عمل کنیم .
[/quote]
هم می توانید جدول مورد نظر را قفل کنید تا دیگر نتوانند تا پایان کار شما عملیاتی بر روی آن انجام دهند و هم می توانید از Trancaction استفاده کنید.
موفق باشید

mzjahromi
چهارشنبه 09 آبان 1386, 07:03 صبح
هم می توانید جدول مورد نظر را قفل کنید تا دیگر نتوانند تا پایان کار شما عملیاتی بر روی آن انجام دهند و هم می توانید از Trancaction استفاده کنید.
در این حالت اگر صدور فاکتور یک ساعت به طول بیانجامد ....


اگر حتما باید شماره فاکتور را از ابتدا وارد کنید:
میتوانید رکورد Master رو همون ابتدا درج کنید و سایر رکورد ها رو آخر
ولی اگر کاربر از ثبت فاکتور منصرف شد آن شماره بی استفاده خواهد شد