اذهب الي المحتوي
أوفيسنا

كيف يتم إيقاف مواصلة أوامر بشكل مؤقت ؟


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

السلام عليكم

على سبيل المثال الكود التالي يحتوي على مجموعة أوامر وفي منتصفها أمر فتح نموذج ثم تتتابع الأوامر حتى النهاية .

المطلوب :

بعد أمر فتح النموذج أن يقف تنفيذ الأوامر حتى يتم إغلاق النموذج بمعنى أن لا تظهر رسالة "Hello" حتى يتم غلق نموذج1 .

Sub test()

  '

  '

  DoCmd.OpenForm "نموذج1"

  '-- المطلوب توقف الكود حتى يتم غلق النموذج المفتوح أعلاه نموذج1

  MsgBox "Hello"

  '

  '

  '

End Sub

تحياتي .

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

السلام عليكم

مؤقتا

أحد الحلول ،و ان كان لا يبدو جيدا :SHY:

هو الاعلان عن متغير عام من نوع نعم لا

و فى بداية الروتين الفرعي نكتب اذا كان امتغير = نعم اذهب الي ما بعد فتح الفورم

و فى حدث فتح النموذج نجعل قيمة المتغير = نعم

و عند غلقه نستدعي الروتين الاصلي

مع الاعلان عن Myvar كمتغير عام

Sub test()

If Myvar= True then go to xxx

 '

 DoCmd.OpenForm "Form1"


xxx:

Myvar = False

 MsgBox "Hello"

 '

 '

 '

End Sub



Private Sub Form1_close(Cancel As Integer)

 Myvar = True

 '

 '

 '

 Call test

End Sub

مع تحياتي

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

السلام عليكم

شكرا أخي محمد طاهر .. الفكرة جميلة وتحل المشكلة لو كان الأمر بشكله الموضح ثابت لا يتبدل ولكن لن تكون فعالة معي لرغبتي في فتح النموذج بشكل متعدد ومن مواقع متعددة فمثلا قد احتاج في الكود أعلاه أن أطلب نموذج1 أكثر من مرة في إجراء test وقد أطلبه كذلك من modules أخرى .

تحياتي .

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

قد يصلح فى هذه الحالة أن يكون المتغير من نوع Byte

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

بمعني انه حينما أفتح النموذج من موديول رقم 1 ، يتم تعيين قيمة = 5 مثلا للمتغير

و بذلك عند غلق النموذج ، أعرف من اين استدعيته بناء علي قيمة المتغير

و عند استدعاء النموذذج من موديول رقم 2 تكون القيمة 6 ، و هكذا ...

Sub test()

If Myvar<> 0 then go to xxx



Myvar = 5

DoCmd.OpenForm "Form1"


xxx:

Myvar = 0

MsgBox "Hello"

'

'

'

End Sub



Private Sub Form1_close(Cancel As Integer)


'

'

'

if Myvar = 5 then Call test

if Myvar = 6 then Call test1

if Myvar = 7 then Call test2

if Myvar = 8 then Call test3

End Sub

مع تحياتي

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

السلام عليكم

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

لقد كانت الفكرة هي كصندوق الرسائل بعد مناداته فهو يحتكر النظام حتى يقفل ويرجع قيمة الزر .

تحياتي .

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

  • 1 month later...

السلام عليكم

الأخ الكريم محمد طاهر والأخوة الكرام ..

لقد توصلت للحل وكان الحل أمامنا ولكن لم ننتبه له وكان هناك إصرار داخلي أن الحل موجود حيث أنه من غير المنطقي أن لا تكن هذه الميزة موجودة مع كل التقدم الهائل في عالم البرمجة ، وهذا ما جعلني أن أواصل البحث والتجارب حتى وقعت على الحل كما هو موضح أدناه :

DoCmd.OpenForm "Form1", , , , , acDialog

والحل هو اختيار الـ WindowMode إلى acDialog .

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

ولكم تحياتي جميعا .

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

بصراحة ، مفاجأة

و لم أتصور أن الكود سيكمل بعد اغلاق الفورم الثاني

:yess:

جزاك الله خيرا علي المعلومة المفيدة :d

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

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

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

Important Information