ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
إخفاء وإظهار الجداول والكائنات الاخري في قاعدة البيانات
الاستعلامات - النماذج -الماكرو - الوحدات النمطية - التقارير
قاعدة بيانات أكسس هي من قواعد البيانات التي تشمل جميع الكائنات سواء الجداول والنماذج والتقارير والاستعلامات والوحدات النمطية داخل إطار واحد وهو إطار قاعدة بيانات أكسس وبالتالي فإنة من السهولة الوصول الي محتوي قاعدة البيانات وإكتشاف محتوياتها ملم يكون هناك نوع من أنواع الحماية لقاعدة البيانات لمنع المستخدم الي الوصول الي كائنات القاعدة واسلوب الاخفاء لهذة الكائنات من الامور التي قد تصعب من مهمة الي مستخدم عادي للبرنامج من العبث بمحتويات الجداول من البيانات
MDE وكذلك لو تم تحويل قاعدة البيانات كنوع من الحماية الي الصيغة
فإنة من السهل الوصول الي جداول البيانات والعبث بها لذلك فإن إخفاء الجداول تكون طريقة مثلي لحماية البيانات وكذلك إخفاء باقي الكائنات كنوع من أنواع الحماية لها من العبث وتغير محتواها
وقد تسأل وماذا نفعل إن أردنا تعديل أوإضافة الي البرنامج حسب متطلبات العمل فكيف يمكن إظهار الكائنات حتي نجري عليها التعديل أو الاضافة
والجواب هو موجود في العنوان إخفاء وإظهار الكائنات ولكن يجب عليك أن تكون صلاحية الاخفاء والاظهار الي المسؤول عن البرنامج وليس من إختصاص المستخدمين وبالتالي يتم عمل كلمة سر لفتح هذا النموذج الخاص بعملية الاخفاء والاظهارللكائنات
والمثال المرفق يوضح كيفية إخفاء كل نوع من أنواع الكائنات التي تشتمل عليها قاعدة البيانات وكذلك كيفية إظهارها وإمكانية إخفاء وإظهار الكائنات جميعا ويمكنك نسخ كود إخفاء الكائنات جميعا ووضعة في حدث عند التحميل للنموذج الرئيسي ليتم عند فتحة إخفاء كل الكائنات
ونسخ كود إظهار كل الكائنات ووضعة في حدث عند الفتح لنموذج خاص بالمسؤول عن البرنامج ليتم إظهار كل الكائنات المخفية
هذا الكود يوضع عند التحميل أو عند الفتح للنموذج
Private Sub Form_Load_Click()
Call hiddenobj
Call TQ_hidden
DoCmd.OpenForm "mainfrm"
End Sub
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
Private Sub Form_open_Click()
Call objshow
Call TQshow
DoCmd.OpenForm "mainfrm"
End Sub
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كود إخفاء النماذج والماكرو والوحدات النمطية والتقارير
Function hiddenobj()
Dim obj As AccessObject
Dim dbs As Object
Dim qry As QueryDefs
Set db = CurrentDb
Set dbs = Application.CurrentProject
For Each obj In dbs.AllReports
SetHiddenAttribute acReport, obj.Name, True
Next obj
For Each obj In dbs.AllMacros
SetHiddenAttribute acMacro, obj.Name, True
Next obj
For Each obj In dbs.AllModules
SetHiddenAttribute acModule, obj.Name, TrueNext obj
DoCmd.Close
For Each obj In dbs.AllForms
SetHiddenAttribute acForm, obj.Name, True
Next obj
Application.SetOption "Show Hidden Objects", 0
Application.SetOption "Show System Objects", 0
End Function
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كود إظهار النماذج والماكرو والوحدات النمطية والتقارير
Function objshow()
Dim obj As AccessObject
Dim dbs As Object
Dim qry As QueryDefs
Set db = CurrentDb
Set dbs = Application.CurrentProject
For Each obj In dbs.AllReports
SetHiddenAttribute acReport, obj.Name, False
Next obj
For Each obj In dbs.AllMacros
SetHiddenAttribute acMacro, obj.Name, False
Next obj
For Each obj In dbs.AllModules
SetHiddenAttribute acModule, obj.Name, False
Next obj
DoCmd.Close
For Each obj In dbs.AllForms
SetHiddenAttribute acForm, obj.Name, False
Next obj
End Function
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كود إخفاء الجداول والاستعلامات
Function TQ_hidden()
Dim db As Database
Dim obj As AccessObject, dbs As Object
Dim tdf As TableDef
Dim qry As QueryDefs
Set dbs = Application.CurrentData
Set db = CurrentDb
For Each obj In dbs.AllTables
Set tdf = db.TableDefs(obj.Name)
If Left(tdf.Name, 4) <> "msys" And tdf.Attributes <> 1073741824 Then
tdf.Attributes = tdf.Attributes + dbHiddenObject
End If
Next
For Each obj In dbs.AllQueries
SetHiddenAttribute acQuery, obj.Name, True
Next obj
Application.SetOption "Show Hidden Objects", 0
Application.SetOption "Show System Objects", 0
Set tdf = Nothing
db.Close
Set db = Nothing
End Function
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كود إظهار الجداول والاستعلامات
Function TQshow()
Dim db As Database
Dim obj As AccessObject, dbs As Object
Dim qry As QueryDefs
Set dbs = Application.CurrentData
Set db = CurrentDb
For Each obj In dbs.AllQueries
SetHiddenAttribute acQuery, obj.Name, False
Next obj
Set dbs = CurrentDb
For Each tdf In dbs.TableDefs
If Left(tdf.Name, 4) <> "msys" And tdf.Attributes <> 1073741824 _
And tdf.Attributes = 1 Then
tdf.Attributes = tdf.Attributes - dbHiddenObject
End If
Next tdf
Set dbs = Nothing
db.Close
Set db = Nothing
End Function
واليك المثال المرفق
