بالاشارة الي الموضوع السابق و الذي تفضل بطرحه الاخ منصور
http://www.arabteam2000.com/vb/showthread....&threadid=22119
و نظرا لاهمية الموضوع ، تم اغلاق المشاركة السابقة /، و التي تحوي علي أسلوب فك القاعدة و عدة محاولات للتغلب عليها ، و تم اغلاق الموضوع السابق لتسهيل المتابعة حيث وصل الي 4 صفحات و لاهميته نعيد الطرح باسلوب آخر
تعالوا نرتب أفكارنا ، و نطرح الادوات المتاحة للتتعامل مع هذه الافكار
أو ما يمكن ان يمت بصلة للموضوع و لو من بعيد
و هذا الموضوع لترتيب الافكار و الادوات و الاقتراحات و الروابط التي قد تفيد كما يلي، و يرجي ألا يطرح هنا أي تعليقات عامة
و نرجو الا يتردد أحد فى طرح فكرة ، و ألا يقلل من شان فكرة طرحها أخر ، لان أي فكرة يمكن ان تؤدي من منظور ما الي حل أو ترشد الي حل حتي لو كانت هي نفسها بهاخطأ
اولا : كيف نتغلب علي المشكلة
ثانيا : الادوات المساعدة فى التغلب علي المشكلة
ثالثا : أفكار منوعة
رابعا : روابط ذات علاقة بالموضوع ( أو شبه علاقة )
اولا : كيف نتغلب علي المشكلة
1-اما بمنع اظهار النموذج فى وضع التصميم فى حالة ال mde
2-أو بعمل اختبار علي هل هناك نموذج مفتوح فى وضع التصميم ام لا و من ثم اغلاق القاعدة
3-أو بمنع الحفظ بعد التعديل فى الفورم ( أي أن الفتح فى وضع التصميم مسموح و لكن نمنع الحفظ بعد التعديل )
ثانيا : الادوات المساعدة
1- للتعرف علي هل الملف من نوع mde أم لا ؟؟
Function IsItMDE(dbs As Object) As Boolean
Dim strMDE As String
On Error Resume Next
strMDE = dbs.Properties("MDE")
If Err = 0 And strMDE = "T" Then
' This is an MDE database.
IsItMDE = True
Else
IsItMDE = False
End If
End Function2- للتعرف هل هناك نماذج مفتوحة فى وضع التصميم أم لا
Function IsLoaded(ByVal strFormName As String) As Integer ' Returns True if the specified form is open in Form view or Datasheet view. Const conObjStateClosed = 0 Const conDesignView = 0 If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then If Forms(strFormName).CurrentView = conDesignView Then IsLoaded = True End If End If End Function
3- دوال api لتوقيف تنفيذ اجراء معين لفترة محددة
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Command1_Click() 'Sleep for 5000 milliseconds Sleep 5000 End Sub Private Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long Private Sub Form_Load() 'Sleep 2 seconds SleepEx 2000, False End Sub
4- لعمل encryption
Sub EncryptDb() Const conFilePath = "C:Program FilesMicrosoft OfficeOfficeSamples" DBEngine.CompactDatabase conFilePath & "Orders.mdb", conFilePath & _ "EOrders.mdb", dbLangGeneral, dbEncrypt End Sub
ثالثا : أفكار
1-أن نحاول أن نتعرف هل محرر البيزيك مفتوح أم لا ؟ و من ثم نغلق القاعدة فى حالة كونها mde
2-أن نحاول تشغيل دالة تختبر هل هناك نموذج فى وضع التصميم أم لا و ذلك فى حال كون الملف mde ، و لكن كيف نشغلها ؟؟
اذا شغلناها من تايمر فى نموذج فسيتوقف تنفيذه عند فتحه فى وضع التصميم
فربما يمكن تشغيلها فى دالة تعمل باستمرار فى الخلفية كل فترة محددة منذ فتح البرنامج ، و ربما يفيد فيها دوال ال api مثل sleep و sleepex
3- هل من المفيد محاولة تشغيل دالة الاختبار من قاعدى بيانات أخري ، و لا تفتح القاعدة الحالية الا اذا كاانت القاعدة التي تقوم بالاختبار مفتوحة ،
و فى هذه الحالة يمكن تشغيل دالة الاختبار من نموذج به تايمر من قاعدة الاختبار و يمكن توجيه الاختبار الي القاعدة المراد حمايتها
رابعا : روابط ذات علاقة بالموضوع ( أو شبه علاقة )
http://www.microsoft.com/office/ork/2000/t...hree/65t3_4.htm
http://msdn.microsoft.com/library/default....application.asp
http://www.microsoft.com/accessdev/article...ters/ba14_3.htm
http://www.microsoft.com/AccessDev/Article...ters/ba14_1.htm
http://www.vb123.com/toolshed/99_accvb/com...piledaccess.htm
