ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
طريقة عمل نسخة تجريبية للبرنامج
عند تصميمك لبرنامج وترغب في نشرة فإنك بحاجة لأن تكون النسخة تجريبية لفترة محددة من الوقت ثم يتم وقفهاعن العمل وبهذا الصدد اليك مثالين لتطبيق الفكرة
المثال الاول يشرح تطبيق الفكرة بتحديد تاريخ محدد لإنتهاء صلاحية البرنامج ومقارنة هذا التاريخ من تاريخ اليوم وعلي اساس ذلك إذا كان تاريخ اليوم أكبر من التاريخ المحدد يتم وقف البرنامج وذلك عن طريق إغلاقة MDE وفي هذة الحالة يجب تحويل قاعدة البيانات الي صيغة
يوضع هذا الكود في حدث عند فتح النموذج المخصص كواجهة للبرنامج
Private Sub Form_Open(Cancel As Integer)
If Date > #8/2/2010# Then
txt1.Caption = " إنتهاء وقت البرنامج "
mainfrm.Visible = False
Else
txt1.Caption = ("الوقت المتبقي علي البرنامج" & Str(#8/31/2010# - Date) & " يوم هل تريد الاستمرار ")
mainfrm.Visible = True
End If
End Sub
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
المثال الثاني يختلف بطريقتة عن المثال الاول ففي هذا المثال يتم حذف جميع الجداول الموجودة في قاعدة البيانات ومعني ذلك وقفها عن العمل نهائيا في المرات التالية ومعني حذف الجداول يعني فقد البيانات المدخلة خلال فترة التجربة وتعتمد هذة الطريقة علي الاتي
T1 إنشاء جدول
Date1 وبة حقل واحد
وذلك لتخزين تاريخ اليوم الاول لتشفيل النسخة التجريبية
في حدث عند الفتح للنموذج نكتب الكود التالي
Private Sub Form_Open(Cancel As Integer)
On Error GoTo MyErr:
Dim MyFirst As Date
Dim MyInDate
Dim MyTableName As String
MyInDate = DFirst("[Date1]", "[T1]")
If Not IsNull(MyInDate) Then
MyFirst = MyInDate
Else
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO T1 ( Date1 ) SELECT Date();")
DoCmd.SetWarnings True
MyFirst = Date
End If
If MyFirst <= Date - 15 Then ' غير الرقم 15 الي اي رقم تريد
txt1.Caption = "مضي علي تشغيل البرنامج 15 يوم وسيتم ايقافة"
cmdclose.Visible = False
Call TableDelete
Else
If MyFirst > Date Then
txt1.Caption = "تم التلاعب بتاريخ الجهاز وسيتم ايقاف البرنامج"
cmdclose.Visible = False
Call TableDelete
End If
End If
Exit Sub
MyErr:
If Err.Number = 3078 Then
txt1.Caption = "مع السلامة عليك مراجعة صاحب البرنامج"
cmdclose.Visible = False
Else
MsgBox Err.Number & vbCrLf & Err.Description
End If
End Sub
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
وكذلك إضافة هذا الكود الذي يقوم بعملية حذف الجداول من قاعدة البيانات في حالة انتهاء المدة
Function TableDelete()
On Error Resume Next
Dim MyDb As Database
Dim MyTable As TableDef
Dim MyTableCount As Integer
Set MyDb = Application.CurrentDb
MyTableCount = MyDb.TableDefs.Count
For i = MyTableCount - 1 To o Step -1
Set MyTable = MyDb.TableDefs(i)
MyTableName = MyTable.Name
If Left$(MyTableName, 4) <> "Msys" Then MyDb.TableDefs.Delete (MyTableName)
Next
MyDb.Close
End Function
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
واليك الامثلة التي توضح الطريقتين
