اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

فتح نموذج في قاعدة بيانات اخرى بها ماكرو بدء التشغيل لنموذج اخر


SAROOK

الردود الموصى بها

السلام عليكم جميعا

لدي في المرفقات مرفق به  قاعدتي بيانات الاولى المسماة " START " ,والثانية مسماة " END " 

تحوي قاعدة البيانات الاولى START على نموذج به امر فتح نموذج اسمه " TEST "  في قاعدة بيانات اخرى اسمها END  والتي بدورها تحوي ماكرو بدء التشغيل autoexec به امر فتح نموذج اسمه DEL ALL

والمشكلة تتلخص في انه عند فتح القاعدة الاولى و اعطاء امر الفتح للقاعدة الاخرى  يتم فتح كلا النموذجين "TEST " و " DEL ALL " 

وماريده هو  ان يتم فتح النموذج TEST فقط وان يتم تجاهل الماكرو التنفيذي ماكرو بدء التشغيل autoexec

ارجو ان اكون قد احسنت الشرح 

ملاحظة : يجب وضع قاعدة البيانات في المسار  D:\END.ACCDB

 

start.rar

رابط هذا التعليق
شارك

في ٢٨‏/٢‏/٢٠١٧ at 23:44, SAROOK said:

السلام عليكم جميعا

لدي في المرفقات مرفق به  قاعدتي بيانات الاولى المسماة " START " ,والثانية مسماة " END " 

تحوي قاعدة البيانات الاولى START على نموذج به امر فتح نموذج اسمه " TEST "  في قاعدة بيانات اخرى اسمها END  والتي بدورها تحوي ماكرو بدء التشغيل autoexec به امر فتح نموذج اسمه DEL ALL

والمشكلة تتلخص في انه عند فتح القاعدة الاولى و اعطاء امر الفتح للقاعدة الاخرى  يتم فتح كلا النموذجين "TEST " و " DEL ALL " 

وماريده هو  ان يتم فتح النموذج TEST فقط وان يتم تجاهل الماكرو التنفيذي ماكرو بدء التشغيل autoexec

ارجو ان اكون قد احسنت الشرح 

ملاحظة : يجب وضع قاعدة البيانات في المسار  D:\END.ACCDB

 

start.rar

 

7 ساعات مضت, SAROOK said:

للرفع

اليك هذا الحل
غير اسم نموذج dll Alll الى dll_All

واستخدم هذا الكود

Dim appAccess As Access.Application
Set appAccess = New Access.Application
appAccess.OpenCurrentDatabase ("D:\end.accdb")
appAccess.DoCmd.Close acForm, "del_all", acSaveNo
appAccess.DoCmd.OpenForm "test"
appAccess.Visible = True
appAccess.UserControl = True

اي تم اضافة كود اغلاق نموذج ديل ال فقط ... اي تم الاضافة الكود الاسفل فقط
 

appAccess.DoCmd.Close acForm, "del_all", acSaveNo

تحياتي

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم:smile:

 

بالاضافة الى طريقة اخي شفان ، هناك طريقتين بحثت عنهم:

1.

https://msdn.microsoft.com/en-us/library/aa211469(v=office.11).aspx

 

2. كما في المرفق

نستعمل الوحدة النمطية من الرابط التالي: http://access.mvps.org/access/api/api0068.htm 

والتي تمسك مفتاح الشفت برمجيا ، ومنه لا يعمل الماكرو Autoexec :smile:

 

جعفر

609.zip

  • Like 2
رابط هذا التعليق
شارك

السلام عليكم 

اخواي المحترمان / شيفان :fff: وجعفر :fff: مع حفظ الالقاب :fff:

" الاجابة الشافية " هي مايمكن ان اصفكما به

لقد استفدت كثيرا من اجابتكما .... اشكركم 

كلاكما مبدع :fff:

وفقكم الله 

ملاحظة : اخي شيفان المحترم .... هل يمكن منع تحميل نموذج "del_all"  بدلا عن تحميله ثم اغلاقه

لان حدث مسح البيانات سوف يتم وضعه  في حدث عند التحميل للنموذج 

 

رابط هذا التعليق
شارك

في ٢‏/٣‏/٢٠١٧ at 19:12, SAROOK said:

ملاحظة : اخي شيفان المحترم .... هل يمكن منع تحميل نموذج "del_all"  بدلا عن تحميله ثم اغلاقه

لان حدث مسح البيانات سوف يتم وضعه  في حدث عند التحميل للنموذج 

هناك سۆال :

لماذا عملت ماكرو لكي يفتح نموذج مسح الكل " ديل ال " في بداية فتح القاعدة البيانات ؟ ما هو السبب ؟
ما هو سبب لكي تفتح نموذج " تيست " ؟ اي لماذا لا تعمل الماكرو لكي يفتح نموذج تيست
بجواب الاسئلة الاعلى 
راح نواصل لحل المطلوب ان شاء الله
تحياتي

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم 

اخي المحترم / شيفان

تحية طيبة عطرة :fff:وبعد .....

السبب اخي الكريم ان ماطلبته هو اسلوب حماية

الفكرة تتلخص في  طريقة فتح القاعدة " يتم استدعاء قاعدة البيانات المسماة end من خارجها بقاعدة بيانات اخرى مسماة start " فاءن حدث ذلك فسوف يتم فتحها بشكل طبيعي 

اما  ان تم محاوله فتح القاعدة end مباشرة 

هنا سوف يعمل ماكرو بدء التشغيل  وسوف يتم ازالة كافة كائنات القاعدة 

ارجو ان اكون قد احسنت اجابة اسئلتك الكريمة 

 

 

رابط هذا التعليق
شارك

منذ ساعه, SAROOK said:

السلام عليكم 

اخي المحترم / شيفان

تحية طيبة عطرة :fff:وبعد .....

السبب اخي الكريم ان ماطلبته هو اسلوب حماية

الفكرة تتلخص في  طريقة فتح القاعدة " يتم استدعاء قاعدة البيانات المسماة end من خارجها بقاعدة بيانات اخرى مسماة start " فاءن حدث ذلك فسوف يتم فتحها بشكل طبيعي 

اما  ان تم محاوله فتح القاعدة end مباشرة 

هنا سوف يعمل ماكرو بدء التشغيل  وسوف يتم ازالة كافة كائنات القاعدة 

ارجو ان اكون قد احسنت اجابة اسئلتك الكريمة 

عندي فكرة واحدة على هذا
وهو ان نستخدم عداد الوقت 
اي حين يفتحي نموذج ديل ال  اي مسح الكل يتم تشغيل العداد الوقت 
واذا وقت صار ل 2 ثواني او اكثر بيعمل الحذف الكائنات و اذا ما وصل على 2 ثواني وغلق النموذج ما بيعمل شي 
هل هذا يفيدك ؟

رابط هذا التعليق
شارك

السلام عليكم 

اخي المحترم / شيفان

تحية طيبة عطرة :fff:وبعد .....

حقيقة لم استوعب ماذكرت هل لي بتطبيق ماذكرته على المرفق سالف الذكر واكون شاكرا ممتنا لتعبك ومجهودك معي اخي شيفان

 

 

رابط هذا التعليق
شارك

اسمحو لي ببعض التعليقات وان شاء الله تكون مفيده

7 ساعات مضت, SAROOK said:

اما  ان تم محاوله فتح القاعدة end مباشرة 

هنا سوف يعمل ماكرو بدء التشغيل  وسوف يتم ازالة كافة كائنات القاعدة 

ارجو ان اكون قد احسنت اجابة اسئلتك الكريمة 

طيب لو ضغط الشفت هنا ؟ سيفتح القاعدة كماهي ! لم تحل مشكلتك !

في 3/2/2017 at 11:30, jjafferr said:

2. كما في المرفق

نستعمل الوحدة النمطية من الرابط التالي: http://access.mvps.org/access/api/api0068.htm 

والتي تمسك مفتاح الشفت برمجيا ، ومنه لا يعمل الماكرو Autoexec :smile:

جعفر

609.zip

امسكت بالشفت ومنعته .. تمام .. لكن كيف ستفتح النموذج البعيد ؟ 

تحياتي

رابط هذا التعليق
شارك

1 ساعه مضت, jjafferr said:

الجواب في المرفق:smile:

جميل جدا استاذ جعفر

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

ولكن التجربه اثبتت توقع خاطئ .

تتبعت الكود العام على عجاله ووجد ت هذا السطر واتوقع انه زائد وان شاء الله يكون توقع صحيح

Set fGetRefNoAutoexec = objAcc

واعتقد الموضوع يحتاج قراءة على روقان وفيه اختصارات كثيره وان شاء الله هم بعد مايكون توقع خاطئ

تحياتي

رابط هذا التعليق
شارك

السلام عليكم 

اخي المحترم / رمهان

تحية طيبة فواحة:fff:وبعد .....

ان الحل الذي تقدم به الاخ المحترم جعفر " مشكورا" طبقته وهو يعمل 100%  وهي طريقة فعالة ممتازة

ومايحاول الاخ المحترم شيفان هو اسلوب اخر ابتدعه الاخ شيفان .... وهي محاولة لاثراء الموضوع حتى يستفيد اكبر قدر ممكن من الناس .

تحياتي واحتراماتي 

 

 

رابط هذا التعليق
شارك

2 ساعات مضت, SAROOK said:

السلام عليكم 

اخي المحترم / رمهان

تحية طيبة فواحة:fff:وبعد .....

ان الحل الذي تقدم به الاخ المحترم جعفر " مشكورا" طبقته وهو يعمل 100%  وهي طريقة فعالة ممتازة

ومايحاول الاخ المحترم شيفان هو اسلوب اخر ابتدعه الاخ شيفان .... وهي محاولة لاثراء الموضوع حتى يستفيد اكبر قدر ممكن من الناس .

تحياتي واحتراماتي 

شكرا لكبرائنا استاذ @jjafferr و استاذ @رمهانعلى ما قدمت لنا 
@SAROOK لازم احنا نعرف ما نقدم لنا الكبرائنا هو طريقة برمجة صحيحة
واللي احنا نعرفه هو طرائق من الشوارع
ما اخفى انا مش خريج لمعاهد او كليات الحاسوب بل خريج قسم ادارة اعمال
والسببي بيكون هنا هو بيرجع لحكاية من الحكايا لشهر 11 في سنة 2014 
ومنذ ذلك تعلمت من كبرائنا اشياءاً لم علمت قبل ذلك
----------
وهذا هو فكري طبقت علمثال الاسفل

 

'متغير بنوع رقمي لتعداد
Dim Se As Integer
' عند اغلاق النموذج
Private Sub Form_Close()
' قيمة تايمر انترفال بيكون صفر لكي يوقف اونتايمر
Me.TimerInterval = 0
' قيمة المتغير بيكون صفر
Se = 0
End Sub
' عند تحميل النموذج
Private Sub Form_Load()
' قيمة تايمر انترفال بيكون الف اي يساوي ثانية واحدة لكي يشتغل اونتايمر العداد
Me.TimerInterval = 1000
End Sub
' وفي حالة اون تايمر 
Private Sub Form_Timer()
' قيمة متغيرنا بيكون نفسه زائد واحد
Se = Se + 1
' اذا كان قيمة متغيرنا وصل الى اثنان او اكثر
    If Se >= 2 Then
' هنا يفعل ما يۆمر اي بيعمل الحذف الكل
        Call DeleteAllFormsAndReportsss
' انهاء الايف
    End If
End Sub

واليك المرفق بعد تعديل

وهناك شي اخر
الغي كل الگرق لاغلاق نموذج حذف الكل لكي اذا فتح القاعدة لكي ما عندة طريق لكي يغلقه لكي النموذج حذف الكل بيعمل المطلوب

اي لكي بيحذف كل شي لانه فتح بشكل عادي وليس بواسطة قاعدة ستارت

تحياتي

فتح قاعده‌ من قاعده‌ اخرى.rar

  • Like 2
رابط هذا التعليق
شارك

السلام عليكم 

اخي المحترم / شيفان

اشكرك كثيرا للاهتمام :fff:وبعد .....

لقد تمت العملية بنجاح وتم مسح الكائنات ماعدا الماكرو autoexec ونموذج del_all طبعا لانه مفتوح

ولكن ظهر بعدها خطاء " compile error  sub or function not defined "

واعتقد ان سبب ظهوره هو ازالة الوحدة النمطية الخاصة بامر ازالة كافة الكائنات " module5 "

حاولت ان اقضي عليه بكل الطرق المشروعه وغير المشروعه:biggrin: 

ولكن لم افلح 

تحياتـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــي

 

 

 

رابط هذا التعليق
شارك

11 ساعات مضت, SAROOK said:

السلام عليكم 

اخي المحترم / شيفان

اشكرك كثيرا للاهتمام :fff:وبعد .....

لقد تمت العملية بنجاح وتم مسح الكائنات ماعدا الماكرو autoexec ونموذج del_all طبعا لانه مفتوح

ولكن ظهر بعدها خطاء " compile error  sub or function not defined "

واعتقد ان سبب ظهوره هو ازالة الوحدة النمطية الخاصة بامر ازالة كافة الكائنات " module5 "

حاولت ان اقضي عليه بكل الطرق المشروعه وغير المشروعه:biggrin: 

ولكن لم افلح 

تحياتـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــي

افتح موديول 5 "module5"

وغير

    ''Modules
    For idx = CurrentProject.AllModules.Count - 1 To 0 Step -1
        strName = CurrentProject.AllModules(idx).Name
        If strName <> "Module9" Then
            DoCmd.DeleteObject acModule, strName
        End If
    Next idx

الى

    ''Modules
    For idx = CurrentProject.AllModules.Count - 1 To 0 Step -1
        strName = CurrentProject.AllModules(idx).Name
        If strName <> "Module5" Then
            DoCmd.DeleteObject acModule, strName
        End If
    Next idx

شوف الاول مكتوبة موديول 9  "module9" واسم الصحيح هو موديول 5 "module5"

غيرها اولا

والان صار كود اونتايمر هكذ

Private Sub Form_Timer()
Se = Se + 1
    If Se >= 2 Then
        Call DeleteAllFormsAndReportsss
        DoCmd.DeleteObject acMacro, "autoexec"
        DoCmd.DeleteObject acModule, "module5"
    End If
End Sub

تحياتي

  • Like 1
رابط هذا التعليق
شارك

اخينا ساروك ان صح الاسم

1. لو فرضنا ان المستخدم فتح end  وبالاستمرار على الشيف فسيفتح القاعدة بدون حماية ! هنا لم تستفد من الفتح عن طريق ملف اخر

2. مسالة الحماية بحذف الكائنات : تخيل ان عميلك قام لهذا من باب الفضول . هنا انت حملت نفسك تكلفة اضافية لاعادة البرنامج وكذلك قد تجد طريقا مسدودا لاعادة الكائنات

3. اختصار لماتريد تستطيع عمل شرط عند فتح النموذج الرئيسي وهو هل تم فتح النموذج مباشرة ام عن طريق الماكرو التنقيذي . فاذا مباشرة يتم الرفض والخروج من البرنامج والعكس اذا تم الفتح عن طريق الماكرو التلقائي يتم فتح النموذج والاستمرار

بالتوفيق

  • Like 2
رابط هذا التعليق
شارك

السلام عليكم 

اخي المحترم / شيفان

اشكرك كثيرا لتعبك المتواصل معي جعله الله في ميزان حسناتك :fff:وبعد .....

لقد طبقت كل ماارشدتني  اليه وللاسف مازال الخطاء  " compile error  sub or function not defined "

موجود.

تحياتـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــي

 

 

 

تم تعديل بواسطه SAROOK
رابط هذا التعليق
شارك

السلام عليكم 

اخي المحترم / رمهان

شكرا جزيلا لك :fff:لمشاركتك معنا في هذا الموضوع وانه لشرف كبير :fff:ان نرى اسهامتك حاضرة موجه لنا نحن طلاب علم المنتدى .

1- بالنسبة لموضوع فتح القاعدة end  " لن يستطيع المستخدم العادي فتحها عن طريق الشفت لانه زر الشفت ملغى او غير مفعل "

2- بالنسبة للعميل فيما لو فتح صدفة او خطاء او فضولا القاعدة ... هذه القاعدة سوف تكون مخفية جيدا .هذا من ناحية  ومن الناحية الاخرى طبعا هذا احتمال استعددت  له طالما طبقت هذه الحماية. فالقاعدة مكونه من جزئين جزء واجهات والجزء الاخر جدوال وبها  نظام حفظ تلقائي للجدوال . فلو مسحت القاعدة طبيعي ان المبرمج لديه الاجزء الاساسي " الواجهات "

3- الفكرة التي ذكرت فكرة ممتازة ورائعة ولسوف احاول العمل عليها ان شاء الله :smile:

تحياتي الكبيرة لشخصك الكريم اخي رمهان واياديك معنا وفقك الله :fff:

رابط هذا التعليق
شارك

47 دقائق مضت, SAROOK said:

السلام عليكم 

اخي المحترم / شيفان

اشكرك كثيرا لعبك المتواصل معي جعله الله في ميزان حسناتك :fff:وبعد .....

لقد طبقت كل ماارشدتني  اليه وللاسف مازال الخطاء  " compile error  sub or function not defined "

موجود.

تحياتـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــي

اسف اخي سروك
اتفضل القاعدة بعد التعديل
للعلم انا اضفت للكود اون تايمر 

Me.TimerInterval = 0

Private Sub Form_Timer()
Se = Se + 1
    If Se >= 2 Then
    Me.TimerInterval = 0
        Call DeleteAllFormsAndReportsss
                DoCmd.DeleteObject acMacro, "autoexec"
        DoCmd.DeleteObject acModule, "module5"
    End If
End Sub

تحياتي

end.rar

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم 

اخي المحترم / شيفان

ممتــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــاز

لقد عمل الكود بنجاح فائق

بارك الله فيك ومتعك بالصحة والعافية -- انت عبقري --  

تحياتـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــي

 

 

 

  • Like 1
رابط هذا التعليق
شارك

في 3/6/2017 at 16:42, SAROOK said:

 

1- بالنسبة لموضوع فتح القاعدة end  " لن يستطيع المستخدم العادي فتحها عن طريق الشفت لانه زر الشفت ملغى او غير مفعل "

مافيه شي اسمه الغاء الشفت . راجع موضوع للاستاذ ابو خليل به مرفق يمنح الشفت وبه خيار الغاء الشفت لاي قاعدة تختارها وهو مفتوح المصدر .  هذا للتنبيه فقط .

في 3/6/2017 at 16:42, SAROOK said:

 

3- الفكرة التي ذكرت فكرة ممتازة ورائعة ولسوف احاول العمل عليها ان شاء الله :smile:

حاول التنفيذ . وان صعب عليك عد وسنعود

تحياتي

  • Like 1
رابط هذا التعليق
شارك

3 ساعات مضت, رمهان said:

مافيه شي اسمه الغاء الشفت . راجع موضوع للاستاذ ابو خليل به مرفق يمنح الشفت وبه خيار الغاء الشفت لاي قاعدة تختارها وهو مفتوح المصدر .  هذا للتنبيه فقط .

حاول التنفيذ . وان صعب عليك عد وسنعود

تحياتي

ساحاول التنفيذ ان شاء الله اخي رمهان المحترم بارك الله بك وفيك:fff::fff::fff:

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information