PDA

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



Tasnim
جمعه 17 خرداد 1387, 10:43 صبح
سلام دوستان
ميخاستم بدونم چطوري ميشه يه جدول رو توي دلفي قفل كرد
يعني وقتي يك كاربر درحال ورود يا ويرايش اطلاعات هست كس ديگري نتونه اطلاعات وارد سيستم كنه

babak_delphi
جمعه 17 خرداد 1387, 11:27 صبح
قفل کردن جدول کار صحیحی نیست
فرض کنید یک جدول با 100000 رکورد دارید و یک کاربر در حال اصلاح اون باشه
حالا وسط کار هوس کنه بره یه چایی بخوره بعد هم تلفنش زنگ بزنه و ...
حالا تکلیف بقیه کاربرهایی که به اون جدول نیاز دارند چیه؟

در مورد خصوصیت LockType از ADODataset (مثلا ADO Query) تحقیق کنید
در همین سایت هم مفصّل بحث شده
موفق باشید

B_YAGHOBI
جمعه 17 خرداد 1387, 16:10 عصر
دنبال مباحث RowLock بگرديد چون بهتره در مواقعي مثل حذف يا ويرايش ركورد يك ركورد را RowLock كنيد

نه كل جدول را.

SYNDROME
جمعه 17 خرداد 1387, 17:14 عصر
سلام دوستان
ميخاستم بدونم چطوري ميشه يه جدول رو توي دلفي قفل كرد
يعني وقتي يك كاربر درحال ورود يا ويرايش اطلاعات هست كس ديگري نتونه اطلاعات وارد سيستم كنه
می توانی از روشی که امین ثابتی در مورد قفل کردن رکوردها گفته استفاده کنی.
هر کاربر با یک نام کاربر به خصوص به SQL متصل شود و اگر کاربر خوات رکورد را ویرایش کند نام کاربر را در یک فیلد ذخیره کنید و بعد از اتمام کار نا کاربر از فیلد مورد نظر حذف شود.
جستجو کنی در بخش SQL مطرح شده است.
موفق باشید

vcldeveloper
جمعه 17 خرداد 1387, 17:29 عصر
LockType = ltPessimistic موجب Lock کردن رکوردها میشه. همونطور که در پست شماره 2 گفته شد، قبلا درباره اش بحث شده. جستجو کنید.

Tasnim
شنبه 01 تیر 1387, 10:09 صبح
سلام دوستان
ببخشيد شايد من نتونستم درست منظورم رو برسونم هدف من از قفل كردن جدول براي اينه كه موقع ثبت در جدول تنها يك نفر بتونه ثبت كنه واگر10 نفر باهم دكمه ثبت توي ديتابس رو زدن به ترتيب شروع به ثبت كنه و به خاطر ساختار بانكي كه دارم بايد هر كس جداگنه اطلاعات به طور كامل ذخيره بشه بعد اطلاعات نفر بعدو ذخيره كنه

Saeid59_m
دوشنبه 10 خرداد 1389, 22:59 عصر
من یه جدول از User ها می سازم و شماره رکوردی راکه کاربر درحال ویرایش اون هست ثبت میکنم و وقتی بقیه کاربر ها بخوان به اون رکورد دسترسی داشته باشند پیغام می ده که فلان کاربر درحال ویرایشه و باید صبر کنید .

البته این روش یک مشکل داره اون هم اینه که اگه کاربر بدون اینکه از برنامه خارج بشه کامپیوترش رو خاموش کنه اون رکورد قفل می مونه تا زمانه که کاربر ارشد وارد بشه و قفل رکورد اون کاربر رو آزاد کنه .

ضمنآ توجه داشته باشید که سیستم بانکی کشور (بانک ایران Teller) نیز به همین صورت کار می کنه .