بسم الله الرحمن الرحيم
لعل الكثير منا (و خاصة المطورين) نواجه مشاكل في تعديل التطبيقات الموجوده على الشبكه
ذالك لان عدد من المستخدمين قد يشغلون البرنامج و بالتالي لا يمكن المطور من الدخول و التعديل الا بعد خروج جميع المستخدمين.
في هذا الموضوع ساقوم بشرح طربقه سهله و بابسط ما يمكن لحل هذه المشكله باذن الله
الهدف:
هو اخراج كافه المستخدمين من التطبيق بعد فترة زمنيه محدده من دون الحاجه لدخولك كمطور.
خلاصة الطريقه:
قيام التطبيق بفحص وجود ملف خارج ال database كل فترة معينه و اغلاق التطبيق عند عدم وجود هذا الملف
الخطوات:
1- انشئ مجلدا في السواقه C و سميه My Data
2- انشئ ملفا نصيا فارغا و سميه open.txt
3- غير الاحقه من txt الى abc مثلا ليصبح اسم الملف open.abc
4- انشئ ملف اكسس و ضع فيه اي جدول و اي بيانات
5- انشئ نموذج لهذا الجدول و سميه frmName ثم اغلقه
الان نحتاج الى بعض التركيز
6- انشئ نموذجا جديدا غير مرتبط و سميه frmShutDownWarn و ضع فيه text box و سميه txtWarning
سيكون في هذا النموذج رسالة التنبيه للمستخدم بانه ستيم انهاء البرنامج لكي يتسنى له حفظ البيانات التي يعمل بها ثم اغلق النموذج
7- انشئ نموذجا جديدا غير مرتبط و سميه frmShutDownCheck سيكون هذا النموذج فارغا من اي شئ
مهمة هذا النموذج هو القيام بعميله فحص و التاكد من اسم الملف المذكور سابقا open.abc
8- ادخل على النموذج frmShutDownCheck بوضع التصميم
9- من خصائص النموذج ضع 60000 في خانة Timer Interval اي دقيقه واحده حيث كل 1000 Milisecond تساوي ثانيه و احده (يمكنك تغيير الوقت كما تريد)
10- انقر على زر View Code الموجدود ضمن مجموعه tools كما في الصوره .
11- ثم ادخل الكود التالي:
Dim boolCountDown As Boolean
Dim intCountDownMinutes As Integer
Private Sub Form_Open(Cancel As Integer)
' Set Count Down variable to false
' on the initial opening of the form.
boolCountDown = False
End Sub
Private Sub Form_Timer()
On Error GoTo Err_Form_Timer
Dim strFileName As String
strFileName = Dir("c:\My Data\open.abc")
If boolCountDown = False Then
' Do nothing unless the check file is missing.
If strFileName <> "open.abc" Then
' The check file is not found so
' set the count down variable to true and
' number of minutes until this session
' of Access will be shut down.
boolCountDown = True
intCountDownMinutes = 2
End If
Else
' Count down variable is true so warn
' the user that the application will be shut down
' in X number of minutes. The number of minutes
' will be 1 less than the initial value of the
' intCountDownMinutes variable because the form timer
' event is set to fire every 60 seconds
intCountDownMinutes = intCountDownMinutes - 1
DoCmd.OpenForm "frmShutDownWarn"
Forms!frmShutDownWarn!txtWarning = "This application will be shut down in approximately " & intCountDownMinutes & " minute(s). Please save all work."
If intCountDownMinutes < 1 Then
' Shut down Access if the countdown is zero,
' saving all work by default.
Application.Quit acQuitSaveAll
End If
End If
Exit_Form_Timer:
Exit Sub
Err_Form_Timer:
Resume Next
End Subسيقوم هذا الكود بفحص مسار و اسم الملف open.abc كل دقيقه, و في حال عدم وجود هذا الاسم في المسار C:\My Data\open.abc
سيقوم باظهار رسالة التنبيه للمستخدم و بعدها بدقيقه سيتم حفظ جميع البيانات و سيغلق البرنامج تلقائيا
ملاحظه هامه جدا:
لكي نضمن دوام عملية الفحص يجب ان يكون النموذج frmShutDownCheck مفتوحا و مخفيا طول فترة استخدام التطبيق لذلك نقوم بما يلي:
12- انشئ مايكرو لفتح النموذج frmName و frmShutDownCheck
13- عند خاصية Window Mode للنموذج frmShutDownCheck اجعلها Hidden كما في الصوره
14- اغلق المايكرو و سميه autoexec تماما .. لكي يقوم بفتح النموذجين تلقائيا عند فتح التطبيق, الان اغلق ملف الاكسس
لتجربة ما قمت به, عدل اسم ملف open.abc و اجعله اي شئ اخر او انقله الى سطح المكتب او اي مسار اخر و راقب ما سيحدث في ملف الاكسس
ملاحظه هامه:
اسم الملف open.abc يختلف عن Open.abc او OPEN.abc او open.txt و عند الاختلاف يقوم باجراءات اغلاق التطبيق
مميزات الطريقه السابقه عن غيرها من الطرق:
1- تمنح المستخدم بعضا من الوقت لانهاء و حفظ عمله قبل الاغلاق
2- سيتم اغلاق البرنامج حتى لو كان كومبيوتر المستخدم في وضع Work Station
3- لاداعي للمطور ان يدخل علىالتطبيق و يقوم بتغيير اي شيء للاخراج المستخدمين بل يكفي فقط تغير اسم او مسار الملف الذي في مثالنا open.abc
4- لا داعي ان يكون التطبيق مصمم على طريقة Client - Server
لتجربة المف المرفق:
قم بفك الضغط و ضع الملفين في المسار C:\My Data
اخيرا ارجو ان اكون موفقا في شرحي و اتمنى ان يكون هناك اي سؤال او اضافه او مشاركه في هذا الخصوص .. و لا نتسونا من صالح الدعاء لي و لكم
الحمد لله الذي تتم بنعمه الامور
