• 0
faife

[ تمت الإجابة ]حماية النماذج من الفتح إلا عن طريق قاعدة بيانات خارجية

سؤال

السلام عليكم ورحمة الله وبركاته...

تجدون أخوتي في المثال المرفق ثلاث ملفات أكسس (main-caun-ser) و main هي الملف الرئيسي حيث يحتوي على زرين لفتح الملفين ser-caun وطلبي بارك الله فيكم هو حماية الملفين بحيث لا يتم فتحهم الا عن طريق الملف الرئيسي.....

ودمتم عونا لنارغم انعدام عطائنا.

save.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

اخي الفاضل

السلام عليكم ورحمة الله وبركاته

اتمنى ان تركز معي قليلا لأن الموضوع به نوع من التعقيد قليلا لغرض فرض الحماية على كائنات معينة قبل فتحها وهي النماذج .

تتم عملية الحماية لعدم فتح النموذج من القاعدة المطلوبه من خلال التالي :

اولا في قاعدة البيانات serv.mdb

1. نضع في قاعدة البيانات التي بها النموذج الغير مرغوب في فتحه الوحدة النمطية التالية

Function isLoaded(strName As String, Optional intType As Integer = acForm) As Boolean
isLoaded = SysCmd(acSysCmdGetObjectState, intType, strName) = acObjStateOpen
End Function

2. نقوم الآن بإنشاء نموذج جديد فاضي ونسميه frmHide ويعني النموذج المخفي

3. نضع في حدث عند الفتح لهذا النموذج الكود التالي

Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm "frmServ"
End Sub

بمعنى انه اذا تم فتح هذا النموذج المخفي frmHide فسوف يتم فتح نموذج الدعم frmServ

4. نقوم الآن باستدعاء الوظيفة Function isLoaded في حدث عند فتح النموذج frmServ بهذه الطريقة

Private Sub Form_Open(Cancel As Integer)
If Not isLoaded("frmHide") Then
MsgBox "عذرا أخي الكريم ... لا يمكن فتح النموذج في الوقت الراهن لأنه محمي", vbCritical, "تنبيه"
Cancel = True
End If
End Sub

وهذا يعني انه اذا لم يكن النموذج المخفي frmHide مفتوح فلن يتم فتح نموذج الدعم frmServ

حاول تفتح قاعدة بيانات الدعم serv.mdb ثم افتح النموذج frmServ فلن تستطيع لأن نموذج frmHide مغلق ويجب فتحه من القاعدة الرئيسية Main.mdb

5. الآن نقوم بإخفاء النموذج المخفي عن اعين المتطفلين وذلك بالضغط عليه بالماوس الأيمن وهو مغلق من خلال اطار كائنات قاعدة البيانات ثم نختار خصائص ومن ثم نضع علامة صح على السمات : مخفي ( انظر الصوره )

post-15367-1196352491_thumb.gif

post-15367-1196352519_thumb.gif

ولكي نقوم بإخفاء بالكامل ننتقل الى اشرطة قوائم الأكسيس ونختار ادوات ثم نختار منها خيارات ونختار التبويب عرض ثم نزيل علامة الصح من الخيار " كائنات مخفيه " ثم نضغط على زر الأمر " تطبيق " ثم موافق ( انظر الصوره )

post-15367-1196352542_thumb.gif

سنلاحظ اختفاء النموذج المخفي frmHide ولم يعد ظاهرا ابدا والذي ظاهرا امامنا فقط هو نموذج الدعم frmServ

نقوم بتطبيق هذه الخطوات بالكامل على القاعدة الثانية Caun.mdb

1. وضع الوحدة النمطية

Function isLoaded(strName As String, Optional intType As Integer = acForm) As Boolean
isLoaded = SysCmd(acSysCmdGetObjectState, intType, strName) = acObjStateOpen
End Function

2. إنشاء النموذج المخفي frmHide وتطبيق جميع الخطوات عليه

3. عند الخطوة رقم 3 نغير اسم النموذج المطلوب فتحه وهو frmCaun

انتهينا الآن من تجهيز القاعدتين الأولى والثانية وننتقل الى القاعدة الرئيسية Main.mdb

حيث نضع تحت زر الأمر الخاص بفتح نموذج الخدمات frmServ في القاعدة الثانية الكود التالي

Private Sub CmdSer_Click()
Dim App As Access.Application
Dim strPath As String
Set App = New Access.Application
strPath = Application.CurrentProject.Path & "\serv.mdb"
With App
.Visible = True
.DoCmd.Maximize
.OpenCurrentDatabase strPath
.DoCmd.OpenForm "frmHide", , , , , acHidden
End With
Set App = Nothing
End Sub

حيث تم اولا استدعاء برنامج الأكسيس لفتحه ثم فتح قاعدة البيانات الموجوده في نفس المجلد التي به القاعدة الرئيسية ثم يتم فتح النموذج المخفي في وضع الإخفاء ( اي لن يكون ظاهرا اثناء الفتح ) في القاعدة serv.mdb وطبعا اذا تم فتح النموذج المخفي سيتم مباشرة فتح نموذج الخدمات .

بنفس الطريقة لزر الأمر الخاص بفتح نموذج الإحصائية frmCaun الموجود في القاعدة الثانية Caun.mdb نضع هذا الكود

Private Sub CmdCn_Click()
Dim App As Access.Application
Dim strPath As String
Set App = New Access.Application
strPath = Application.CurrentProject.Path & "\caun.mdb"
With App
.Visible = True
.DoCmd.Maximize
.OpenCurrentDatabase strPath
.DoCmd.OpenForm "frmHide", , , , , acHidden
End With
Set App = Nothing
End Sub

حيث سيتم استدعاء برنامج الأكسيس لفتحه ثم فتح قاعدة البيانات الموجوده ايضا في نفس مجلد القاعدة الرئيسية ثم يتم فتح النموذج المخفي في وضع الإخفاء ( اي لن يكون ظاهرا اثناء الفتح ) في القاعدة cuan.mdb وطبعا اذا تم فتح النموذج المخفي سيتم مباشرة فتح نموذج الإحصائية .

وهذا برنامج بعد التعديل

save.rar

بالتوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك أختي الفاضلة سباقة دائما للنفع أثابك الله عمل رائع وهو المطلوب....

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك يا مشرفتنا العزيزة

حل رائع و بسيط و به أفكار ملهمه بالفعل . :clapping:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بسم الله الرحمن الرحيم

تمت الإجابة على الموضوع

إدارة الفريق العربي للبرمجة

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .