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

كود لإاغلاق جميع النماذج وفتح نموذج محدد


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

السلام عليكم

عملت برنامج وخلصته تقريبا بس واجهت مشكلة

البرنامج من النماذج شغال ممتاز

النموذج الاصلي عملته كبير ماكسيمام

والباقي عملتها مربعات حوار

المشكلة

عملت شريط ادوات خاص بالبرنامج

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

وهكذا مع خيارات شريط الادوات

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

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

اذا كان هناك كود يتأكد من اقفال النماذج ماعدا نموذج واحد .......... راح يحل المشكة

او طريقة اخرى

اتمنى من لدية خبرة مساعدتي

تحياتي لكم

رحال العمر

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

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

ضع في حدث عند النقر لزر اضافة زبون الكود التالي

docmd.openform "اسم النموذج الخاص بإضافة الزبون"

docmd.close me.name

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

اضافة بسيطة

هذا كود ايضاً يقوم بالتأكد هل النموذج مغلق ام لا ... يمكنك الاستفادة من الفكرة

If (Application.CurrentProject.AllForms("ÇÓã ÇáäãæÐÌ").IsLoaded) = True Then

MsgBox "the form is loading"

Else

MsgBox "the form is not loading"

End If

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

يبدو اني لم اوضح المشكلة

اولا شكرا لك اخي امير عاطف على الرد

اخي المشكلة ليست بالازار

الازرار شغالة تمام

لكن المشكلة بشريط القوائم

بالنسبة للكود الثاني ماهو عمله ( هل هو )

يقوم بالتأكد ان جميع النماذج مقفلة ثم يفتح النموذج المطلوب ؟؟

واذا كان كذلك اين اضع هذا النموذج ليصبح عام في البرنامج

رحال العمر

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

نعم يمكنك استخدام الكود السابق بحيث اذا وجد فورم محدد مفتوح يقوم بإغلاقة أو العكس

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

If (Application.CurrentProject.AllForms("formname").IsLoaded) = True Then
واذا كان النموذج مفتوح نقوم بإغلاقة حل آخر: وهو عند فتح النموذج الذي تريد فتحة ضع عند حدث الفتح للنموذج كود يقوم بإغلاق النموذج الذي تريده ولعمل كود يقوم بإغلاق اي نموذج تريد
DoCmd.Close acForm, "formname"

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

السلام عليكم

طيب اخي امير عاطف بارك الله فيك

الآن تقريبا قطعنا نصف المشوار

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

هل ممكن اضع الكود السابق بشكل عام

يعني يشوف البرنامج اي نموصذج مفتوح ويغلقه ثم يفتح النموذج المطلوب ؟؟

اذا كان لايوجد كود بهذه الطريقة سأكتفي بالكود السابق

DoCmd.Close acForm, "formname"

تحياتي لك اخي وشكرا لتعاونك

اخوك رحال العمر

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

الأخ رحال العمر : سلام الله علكم ورحمته تعالى وبركاتة

يمكنك عمل ما تريد عن طريق لصق الاجراء التالي بوحدة نمطية عامية

Public Sub AllForms()

    Dim obj As AccessObject, dbs As Object

    Set dbs = Application.CurrentProject

    For Each obj In dbs.AllForms

        If obj.IsLoaded = True Then

        obj.Properties.Application.DoCmd.Close

        MsgBox "all forms is closing",vbokonly,"officena"

        End If

    Next obj

End Sub
بعد ذلك في حالة انك تريد في اي وقت وفي اي مكان في برنامجك ان تغلق اي نموذج مفتوح وتقوم بفتح نموذج معين .. فمثلاً تضع الحدث التالي
Call AllForms

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

DoCmd.OpenForm "form1"

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

  • 4 weeks later...

اخي امير ماذا لو كان حدث عند النقر لزر معاينة تقرير مشغول بكود معين ومثاله التالي

Private Sub Preview_Click()

    If IsNull([من تاريخ]) Or IsNull([الي تاريخ]) Then

        MsgBox "يجب ادخال تاريخ البداية وتاريخ النهاية."

        DoCmd.GoToControl "من تاريخ"

    Else

        If [من تاريخ] > [الي تاريخ] Then

            MsgBox "تاريخ النهاية يجب ان يكون اكبر من تاريخ البداية."

            DoCmd.GoToControl "من تاريخ"

        Else

            Me.Visible = False

        End If

    End If

End Sub

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

اتمنى ان اكون اوضحت السؤال شاكراً لك عزيزي

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

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

قم بوضع هاتين الدالتين بوحدة نمطية عامة :

الدالة الأولى :

Public Function CloseForms()

   Dim objname As String

   Dim obj As AccessObject, dbs As Object

   Set dbs = Application.CurrentProject

   For Each obj In dbs.AllForms

       If obj.IsLoaded = True Then

          Dim db As DAO.Database

          Dim rst As DAO.Recordset

          Dim tbltest As DAO.TableDef

          Dim fldtest As DAO.Field

          Set db = CurrentDb

          Set tbltest = db.CreateTableDef("tblname")

          Set fldtest = tbltest.CreateField("formname", dbText)

          fldtest.Size = 50

          tbltest.Fields.Append fldtest

          db.TableDefs.Append tbltest

          Set rst = db.OpenRecordset("tblname")

          While Forms.Count > 0

                rst.AddNew

                objname = obj.Properties.Application.CurrentObjectName

                rst!formname = objname

                rst.Update

                obj.Properties.Application.DoCmd.Close

          Wend

          rst.Close

          db.Close

       End If

   Next obj

End Function
الدالة الثانية :
Public Function OpenForms()

       Dim db As DAO.Database

       Dim rst As DAO.Recordset

       Set db = CurrentDb

       Set rst = db.OpenRecordset("tblname")

       rst.MoveFirst

       Do Until rst.EOF

          DoCmd.OpenForm rst!formname

          rst.MoveNext

       Loop

       rst.Close

       db.Close

       DoCmd.DeleteObject acTable, "tblname"

End Function

وقم باستداعاء الدالة الأولى عند حدث الفتح للتقرير الذي تريد لكي تقوم باغلاق جميع النماذج المفتوحه وحفظ اسماء هذه النماذج بجدول مؤقت .

وقم باستدعاء الدالة الثانية عند حدث اغلاق نفس التقرير لكي تقوم بفتح النماذج التي كانت مفتوحة قبل فتح التقرير.

مع خالص التحية :d

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

فكرة الكود جميلة :d :yess:

و تساؤل عن الطلب نفسه للأخ alali100 ، لماذا تريد اغلاق جميع النماذج المفتوحة ؟؟ أي لماذا لا تفتح التقرير و النموذج مفتوح ؟؟

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

  • 4 weeks later...
و تساؤل عن الطلب نفسه للأخ alali100 ، لماذا تريد اغلاق جميع النماذج المفتوحة ؟؟ أي لماذا لا تفتح التقرير و النموذج مفتوح ؟؟

اخي العزيز محمد استكمالاً لموضوع

كود لإاغلاق جميع النماذج وفتح نموذج محدد

حيث انني لم استطع اضافة الرد في نفس الموضوع لنظام الصلاحيات

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

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

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