ايقاف الحفظ التلقائي في الاكسيس
ايقاف الحفظ التلقائي في الاكسيس :
الاكسيس برنامج قواعد بيانات مصمم من ضمن مجموعه برامج مايكروسوفت اوفيس و تختلف برامج قواعد البيانات عن اي برامج عاديه مثل الاكسيل حيث بمجرد الكتابه و الخروج من الصف تم حفظ البيان في الوضع العادي للبرنامج بدون الحاجه لضغط علي حفظ
ايقاف الحفظ التلقائي في الاكسيس
برامج قواعد البيانات
برنامج الاكسيس يختلف عن اي برنامج اخر داخل مجموعه الاوفيس حيث عند محاوله فتح اي ملف عمل جديد لن تستطيع العمل الا بعد حفظ قاعده البيانات علي الجهاز و هذا غير اي برنامج اخر ضمن مجموعه الاوفيس فعلي سبيل المثال تستطيع التعامل مع ملف اكسيل و تنهي عملك و بعد الانتهاء تقوم بحفظ الملف الا ان ذلك يرجع الي طبيعه برامج قواعد البيانات حيث ان الاساس في اي برنامج قواعد بيانات هو الحفظ التلقائي و ليس الحفظ عند الضغط علي حفظ
قد نحتاج اثناء التعامل علي الاكسيس ايقاف بعض الخواص الافتراضيه لبرامج قواعد البيانات مثل خاصيه الحفظ التلقائي ليناسب طبيعه البرنامج الذي نصممه
دعنا نفترض مثال لنعرف المشكله و طريقه حل هذه المشكله
علي افتراض اننا نقوم بادخال بيانات في نموذج و نريد بمجرد محاوله الانتقال الي سجل اخر او محاوله انشاء سجل جديد او محاوله حفظ السجل الحالي تظهر رساله من البرنامج تسال هل نريد الحفظ ؟
يمكن حل هذه المشكله بالعديد من الافكار فيمكن حلها عن طريق كود لايقاف الحفظ التلقائي او يمكن استخدام استعلام تحديث و جعل النموذج غير منضم و يتم تحديث البيانات عند الضغط علي امر حفظ و يمكن استخدام افكار اخري لذلك و كل فكره حسب المشكله
نستعرض المشكله المتاحه في هذا المثال
جدول بيانات مربوط بنموذج نريد ايقاف الحفظ التلقائي في هذا النموذج
الان دعنا نفكر في هذه المشكله
عند ادخال اي بيان في الاكسيس و بمجرد الانتهاء من كتابه هذه القيمه تتم عمليه حفظ القيمه
لهذه المشكله العديد من الحلول نستعرض بعض اشهر هذه الحلول بافكار بسيطه
· يمكن وضع شرط لعدم الحفظ التلقائي
· يمكن عمل نموذج غير مضموم و عمل استعلام تحديث في حاله الحفظ
نبدا بالفكره الابسط و هي وضع شرط لعدم الحفظ التلقائي
فنريد الان وضع شرط لحذف هذا الصف بالكامل اذا لم يضغط المستخدم علي حفظ
في هذه الحاله يكون انسب حدث نسطيع التعامل معه هو حدث قبل ان يقوم النوذج بالتحديث Form_BeforeUpdate
اي يتم تنفيذ هذا الكود البرمجي قبل ان يتم تحديث النموذج
نبدا الكود بتوجيه رساله للمستخدم للسؤال هل تود الحفظ Do you want to Save و تكون هذه الرساله من النوع vbYesNo ليختار المستخدم
و يكون كود هذه الرساله كما يلي
m = MsgBox(“Do you want to Save”, vbYesNo + vbInformation, “Save”)
فاذا ضغط المستخدم علي نعم يقوم النموذج نتنفيذ عمليه التحديث و حفظ البيانات و يتم ذلك من خلال الكود التالي
If m = vbYes Then
DoCmd.Save
و بمجرد اتمام عمليه الحفظ نريد البرنامج ان ينتقل الي السجل التالي
فنستخدم امر الانتقال الي السجل التالي
DoCmd.GoToRecord , , acNext
و الان اذا اردنا الغاء عمليه الحفظ فعلينا ايقاف الحفظ عن طريق الامر
Me.Undo
حيث تم اعمل امر الغاء و امر رفض للحدث تحديث و حفظ فنجد ان النموذج قد نفذ امر عدم الحفظ ذلك قبل حدث التحديث فيعود لنا هذا السجل بالوضع قبل ادراج البيانات به
ايقاف الحفظ التلقائي في الاكسيس
Private Sub Form_BeforeUpdate(Cancel As Integer)
m = MsgBox("Do you want to Save", vbYesNo + vbInformation, "Save")
If m = vbYes Then
DoCmd.Save
DoCmd.GoToRecord , , acNext
ElseIf m = vbNo Then
Me.Undo
DoCmd.CancelEvent
End If
الان علينا اختبار النموذج و الكود و نشاهد التاثير البرمجي للكود
عند الانتهاء من ادخال بيانات النموذج و محاوله الانتقال الي سجل جديد او الانتقال الي السجل التالي او اي سجل اخر او محاوله اغلاق هذا النموذج تظهر رساله تسال علي اتمام عمليه الحفظ فاذا ضغطنا حفظ تتم عمليه الحفظ بنجاح و اذا ضغطنا الغاء عمليه الحفظ يقوم الكود بالغاء كل البيانات التي بالنموذج و لم تحفظ في الجدول الاساسي المربوط بالنموذج
يمكن اضافه رساله تاكيديه علي هذا الكود بعد اتمام عمليه الحفظ لتاكد انه تم حفظ البيانات
Private Sub Form_BeforeUpdate(Cancel As Integer)
m = MsgBox("Do you want to Save", vbYesNo + vbInformation, "Save")
If m = vbYes Then
DoCmd.Save
DoCmd.GoToRecord , , acNext
MsgBox("Saving done ", vbOk + vbInformation, "Save")
ElseIf m = vbNo Then
Me.Undo
DoCmd.CancelEvent
End If
لمزيد من التفاصيل قم بزياره هذا الرابط
https://acc-arab.com/2020/03/blog-post_15.html
تعليقات
إرسال تعليق