تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف اقوم بقفل الملف الذي يستخدمه احد المستخدمين
#4
(20-04-23, 05:32 AM)ابو محمد محمد محمد كتب : شكرا اعرف هذا الحل ولكن هناك حل من صميم تصميم قاعدة البيانات
له علاقة بالعملية Transaction لو احد يعرف ومر به الموضوع


الـ Transaction ليس لها علاقة لا من قريب ولا من بعيد بمنع مستخدم من إجراء تعديل أو الوصول إلى سجل معين.

هذف الـ Transaction هو تحقيق مبداء تكامل البيانات, إما أن تنجح كامل العملية أو تفشل كامل العملية، سواء عملية تحديث أو حذف أو إدخال أو عمليات مختلطة ومتعددة بين هذا وذاك.
أما الكل أو فلا.



يوجد نوع بيانات لحقل وهو Timestamp

هناك آليه تمنع التظارب بين المستخدمين بواسطة التحقق من الحقل من نوع ( Timestamp )
لا يهم اسم الحقل المهم انه موجود ضمن حقول الجدول

مثال :
محمد فتح النافذة وبداء يغير في البيانات على الشاشة ولكن لم يضغط على زر الحفظ بعد، إنشغل أو ذهب إلى مكان.

مصطفى في نفس اللحظة فتح نفس السجل وعدل على البيانات وقام بالحفظ مباشرتاً.

محمد عاد بعد 10 دقائق، ثم ضغط على زر الحفظ، ستظهر له رسالة تخبرة بأن البيانات التي تحاول التعديل عليها قد تغيرت، ويجب عليك تحميلها من جديد إذا كنت ترغب في تعديلها.
   



نوع الخطاء هو : Concurrency violation
بمعنى ( انتهاك التزامن )


المفترض من المبرمج أن يتحقق عند تطبيق جملة ( التحديث أو جملة الحذف ) فقط (  UPDATE  و   DELETE  )  غيرها لا يهم
الــ  (  UPDATE  و   DELETE  )  هم فقط الذين من الممكن أن ينتهكو التزامن.


كيف يتحقق المبرمج : ( بهذة الطريقة عند تنفيذ الجملة )
   

الـ Original_itm_Timestamp هو متغير يأخذ قيمة الحقل itm_Timestamp الأصلية عند أول عملية جلب لهذا السجل
وعندما تريد تنفيذ عملية حفظ أو حذف طبق الجملة في الأعلى للتأكد من أن السجل لم يقم أحد بتغيير منذ آخر لحضة قمت بجلب السجل


الحقل من نوع Timestamp للعلم 
قاعدة البيانات هي من تعدل قيمة هذا الحقل في كل مرة يحدث تغيير في أي حقل من حقول السجل
الـ Timestamp هو عبارة عن تاريخ ووقت ولكن بصيغة Binary وهو مضمون انه لن يتكرر أبداً في نفس الجدول.





إذا كنت تبحث عن آليه لقفل السجل فيجب عليك تطبيق فكرت أخي Taha Okla ولكن بأسلوب مختلف :
لم أجربها من قبل ولكن هذة الفكرة أجدها ممتازة ، وهي :

عند فتح نافذة التعديل على سجل، هذة النافذة ترسل مثلاً كل 30 ثانية أمر تحديث في جدول مختلف بأن هذا السجل تحت التعديل من ( تضع تاريخ ووقت لعملية قفل السجل ) والنافذة يجب أن ترسل كل 30 ثانية ( تاريخ جديد - ينتهي بعد 5 دقائق مثلاً ) أنها مازالت في وض التعديل.
لو فرضاً حدث خلل في البرنامج الشخص الذي يقوم بالتعديل - أو فقد الإتصال وقام بإطفاء الجهاز ، بهذا الشكل لن يبقى السجل في وضع القفل.
لأنك عنما تريد تعديل سجل وتريد قفلة ستتأكد من آخر تاريخ ووقت تم قفل السجل فيه ، إذا كان أكبر من دقيقة واحدة يعني أنه لا توجد هناك نافذة ترسل أمر إبقاء السجل في وضع القفل.

أرجوا أن تكون الفكرة وصلت، والأفكار كثير.




كل عام وأنتم بخير...
الرد }}}
تم الشكر بواسطة: foo , foo , foo , Taha Okla , ابو محمد محمد محمد , ahmed_king2023


الردود في هذا الموضوع
RE: كيف اقوم بقفل الملف الذي يستخدمه احد المستخدمين - بواسطة عبدالله الدوسري - 21-04-23, 06:22 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] مشكلة تظهر عند استخدام الملف manifest mmaalmesry 2 622 12-05-25, 12:15 AM
آخر رد: mmaalmesry
  طلب تعديل كود جلب اسم الملف ومساره مصمم هاوي 4 537 25-01-25, 12:45 AM
آخر رد: مصمم هاوي
  أريد تحديد صلاحيات المستخدمين عن طريق حقل في جدول قاعدة البيانات F.H.M 0 326 12-09-24, 06:29 PM
آخر رد: F.H.M
  حل مشكلة تعذر تحميل الملف أو التجميع ل scannerlib ahlamalgomate2020 0 299 01-09-24, 03:05 PM
آخر رد: ahlamalgomate2020
  كيف اقوم بحل عدم اتصال فيجوال بيسك بالانترنت جيولوجي مبتدئ 3 492 28-06-24, 05:29 AM
آخر رد: جيولوجي مبتدئ
  كيف اقوم بتحديث بيانات داخل Datagrid عبر Button moh61 5 471 28-06-24, 12:03 AM
آخر رد: Zuhare
  كيف اقوم بتحويل التاريخ من هجري الى ميلادي بال Report Viewer moh61 4 557 22-06-24, 09:33 PM
آخر رد: Kamil
  كيف اقوم بالخروج من Sub عبر Sub اخرى moh61 1 326 15-06-24, 12:07 AM
آخر رد: غزة العزة
Rainbow [VB.NET] خطا عند فتح الملف DK-x 2 1,645 03-04-24, 03:26 PM
آخر رد: تركي الحلواني
Information [VB.NET] حذف كل العناصر التي تاتي بعد عنصر الذي احدده listbox mervandz 3 635 10-11-23, 07:12 PM
آخر رد: justforit

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم