21-06-2018, 11:57 AM
(21-06-2018, 09:09 AM)B.M.AbdelAziZ كتب :(20-06-2018, 07:08 PM)أبو معاذ كتب : كيف تقوم بمنع المستخدم من التعديل أو الحذف لسجل مشغول من طرف مستخدم آخر.حاول تغيير طريقة التفكير، إنسى مسالة المنع، قاعدة البيانات هي التي تحدد ذلك
حاول مطالعة ما تجد من توثيق عن Firebird وكيف يعمل خاصة الTransaction
(20-06-2018, 07:08 PM)أبو معاذ كتب : كحل أولي ، أضفت حقلا في الجدول الرئيسي اسمه used من نوع shortint له قيميتن 0 أو 1 ،الحل غير ناجع، تابع لماذا
فعندما يدخل المستخدم أبو معاذ للتعديل على الملف رقم 1 ، أقوم بتغيير قيمة الحقل used من 0 (القيمة الافتراضية) إلى 1 ،
1- أبو معاذ اتصل بالقاعدة ونفذ استعلام مثلا select جدول ما، هنا Transaction تبقى Active يعني لم تقم بCommit او Rollback (طبعا هنا كلام اخر حول المكون المستخدم في الاتصال فبعض منها فرضا يكون autocommit يعني يستدعي Commit بعد كل عملية )
2- Delphi4Us اتصل بالقاعدة ونفذ استعلام مثلا select لنفس الجدول السابق او جدول اخر وله ايضا Transaction
3- أبو معاذ اتصل بالقاعدة ونفذ استعلام وقالم بتغيير قيمة الحقل used من 0 (القيمة الافتراضية) إلى 1 ومن المفروض يقوم بCommit
حتى هنا الحقل used بالنسبة لDelphi4us لا يزال 0
Delphi4Us يستطيع مشاهدة التغيير فقط في حال الTransaction التي قام بها كانت بعد Commit التعديل لTransaction الاخرى.
هل فهمت حتى الان ؟
جزاك الله خيرا أخي عبد العزيز ،
ربما لم يكن سؤالي واضحا .
![[صورة: 168394819.png]](http://www8.0zz0.com/2018/06/21/13/168394819.png)
في الصورة أعلاه بها قائمة الملفات (maitre/detail) إذا ضغطت على رقم الملف تلاحظ محتوى الملف في dbgrid اسفله.
فرضا أن أبو معاذ دخل إلى الملف رقم 1 للتعديل أو الطباعة.
ودخل الأخ Delphi4Us إلى نفس الملف لحذفه ،
كيف ستكون العملية.
الحل الذي وجدته هو انشاء جدول اسمه ملفاتي به رقم الملف فقط ،
عندما يقوم أبو معاذ بالدخول إلى الملف رقم 1 مثلا ، ادخل رقم الملف في الجدول ملفاتي .
إذا أراد Delphi4Us الدخول إلى الملف ، أقوم باستعلام بسيط على الجدول ملفاتي هل الملف المطلوب مشغول أو لا ؟
إذا كان مشغول ، Delphi4Us لا يمكنه الدخول على الملف للتعديل أو الحذف ، فقط للاطلاع أو الطباعة.
عندما يخرج أبو معاذ من الملف رقم 1 ، أقوم بحذف قيمته في جدول ملفاتي.
أرجو أن تكون الفكرة واضحة.
هل من اقتراح آخر.؟
جزاكم الله خيرا.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.

