لسلام عليكم ورحمة الله وبركاته
أحبائي
أنا جالس أقرأ في كتاب " إنشاء التطبيقات وقواعد البيانات في Microsoft Access2002 Visual Basic For Applications خطوة خطوة "
أقرأ في الكتاب في الفصل الثاني
عن كيفية جعل السجلات للقراءة فقط " من خصائص السجل إختيار allow Edit وجعله NO "
ثم وضع زر لتحرير السجلات " بواسطة كود برمجي بالفيجوال عن طريق تحويل خاصية Allow Edit إلى YES "
ثم الأمر الذي أسأل عنه
وهو وضع زر لحفظ السجل بعد الإنتهاء من التحرير " وقد تم وضع هذا الزر عن طريق معالج الأزرار تلقائياً من الأكسس بإختيار حفظ سجل ---> من عمليات السجلات "
والسؤال هو عن معنى الكود البرمجي ................... فهنا فيه مفترض و حقيقة
فالمفترض هو الذي يتبادر مباشرة إلى ذهن ميرمج مبتديء ,,,,,,, والحقيقة هي الأمر الذي كتبه الأكسس داخل هذا الزر
فالمفترض = أنه سيكون الأمر البرمجي للحفظ عكس الأمر البرمجي للتحرير وهو تحويل خاصية Allow Edit إلى NO
والحقيقة = أن الكود البرمجي "" الذي لم أفهمه "" داخل الفيجوال كتب بطريقة أخرى .....
ونأتي إلى مربط الفرس
وهو أن المؤلف يعلل هذا الأمر وهو الأمر الذي كتبه الفيجوال بيسك حقيقةً داخل زر (حفظ السجل) بقوله " توجد طرق أخرى من الممكن أن يستخدمها المستخدم لحفظ السجل باستخدام أمر قائمة, على سبيل المثال
ويجب على التطبيق أن يتوقع كل الإحتمالات "
سؤال 1 :
وكلامه هذا مفهوم لكن ... ماهي هذه الطرق الأخرى ..... ولماذا إختار معالج الأزرار هذا الكود عوضاً عن الطريقة الأسهل وهي تغيير الخاصية Allow Edit إلى NO
ثم يكمل المؤلف كلامه :
" بلإضافة لذلك , من الممكن أن ينتقل المستخدم إلى سجل آخر دون حفظ السجل على الإطلاق وهي حالة أخرى يجب فيها إعادة الخاصية Allow Edit إلى False
الحالتان اللتان تحتاج لمراقبتهما هما :
- كلما انتقل المستخم إلى سجل آخر موجود
- كلما حفظ المستخدم السجل الحالي باستخدام أية طريقة
بالنسبة للحالة الأولى , ستنشيء بنفسك إجراء حدث للحدث Current الخاص بالنموذج الذي يقع كلما عرض Access سجلاً موجوداً في نموذج .
بالنسبة للحالة الثانية ستنشيء إجراء حدث للحدث AfterUpdate الخاص بالنموذج , الذي يقع كلما تم حفظ سجل في نموذج ,في هاتين الحالتين , ستتأكد من إعادة النموذج إلى حالة القراءة فقط في الأوقات المناسبة .
والأمر الذي سيتم وضعه داخل الحدثين Current و AfterUpdate هو :
Me.allowEdit = False "
سؤال 2 :
وهو الأمر Me.allowEdit = False " معنى الحدث هو منع التحرير "
الذي في الحدث Current " ومعنى الحدث على كلام المؤلف إنه كلما انتقل المستخم إلى سجل آخر موجود "
لاحظت أنه عند الإنتقال إلى سجل آخر من المفترض أن يقع الحدث وهو منع التحرير أي عندما أرجع إلى السجل الذي كنت موجود فيه فإنه لايمكنني الكتابة فيه لكن هذا لم يحدث
سؤال 3 :
مافائدة أن أكتب أمر برمجي داخل الحدث AfterUpdate
لأنه على كلام المؤلف يقع هذا الحدث كلما تم الضغط على زر حفظ بقوله " ستنشيء إجراء حدث للحدث AfterUpdate الخاص بالنموذج ,الذي يقع كلما تم حفظ سجل في نموذج "
وإذا كان مراد المؤلف بالحفظ هو الإنتقال من خلية لأخرى فما الفرق بينه وبين الحدث Current
ولكم وافر الشكر