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

مساعدة في تعديل كود خاص بصفحة النموذج


إذهب إلى أفضل إجابة Solved by Moosak,

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

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

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

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

المطلوب تعديل في الكود لكي احدد الصفحة التي اريد ان اغلقها وليس كل الصفحات المفتوحة

ولكم خالص الشكر

 

()Private Sub Form_Current
Dim FormCount As Integer
 
Dim I As Integer
FormCount = Forms.Count
For I = FormCount - 1 To 0 Step -1
If Forms(I).Name <> FormName Then
DoCmd.Close acForm, Forms(I).Name
End If
Next I
End Sub
رابط هذا التعليق
شارك

  • أفضل إجابة

إليك الكود المعدل الذي سيسمح لك بإغلاق صفحات النموذج المحددة بدلاً من إغلاق جميع صفحات النماذج المفتوحة:
 

Private Sub Form_Current()
    Dim FormCount As Integer
    Dim I As Integer
    Dim FormNamesToClose As Variant
    
    ' أضف أسماء صفحات النموذج التي تريد إغلاقها في هذه المصفوفة
    FormNamesToClose = Array("Form1", "Form2", "Form3")
    
    FormCount = Forms.Count
    For I = FormCount - 1 To 0 Step -1
        If IsInArray(Forms(I).Name, FormNamesToClose) Then
            DoCmd.Close acForm, Forms(I).Name
        End If
    Next I
End Sub

Private Function IsInArray(ByVal stringToSearch As String, ByVal arr As Variant) As Boolean
    Dim i As Integer
    For i = LBound(arr) To UBound(arr)
        If arr(i) = stringToSearch Then
            IsInArray = True
            Exit Function
        End If
    Next i
    IsInArray = False
End Function

هنا كيف يعمل الكود المعدل:

1- مصفوفة FormNamesToClose تحتوي على أسماء صفحات النماذج التي تريد إغلاقها عند فتح النموذج الحالي. يمكنك إضافة أو إزالة أسماء النماذج من هذه المصفوفة حسب الحاجة.
2- دالة Form_Current() تقوم بالتمرير على جميع صفحات النماذج المفتوحة باستخدام خاصية Forms.Count.
3- لكل صفحة نموذج، يتحقق ما إذا كان اسم النموذج موجودًا في مصفوفة FormNamesToClose باستخدام دالة المساعدة IsInArray().
4- إذا كان اسم النموذج موجودًا في مصفوفة FormNamesToClose، يتم استخدام بيان DoCmd.Close لإغلاق تلك صفحة النموذج.

دالة IsInArray() هي دالة مساعدة تتحقق مما إذا كان السلسلة المعطاة موجودة في المصفوفة المقدمة. إنها تُرجع True إذا تم العثور على السلسلة، وFalse خلاف ذلك.

بهذا الكود المعدل، يمكنك الآن تحديد صفحات النماذج التي تريد إغلاقها عند فتح النموذج الحالي، بدلاً من إغلاق جميع صفحات النماذج المفتوحة.

 

ما يحتاج أخبرك من وين جبت الجواب :biggrin:

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

الاخ العزيز Moosak خالص شكري على مجهودك

ولكن بعد محاولات عديدة الكود لا يعمل معي باشكل الصحيح وبالرغم من تحديد الصفاحات المطلوب اغلاقها تظل مفتوحة

هل من الممكن اضافة اي تعديل على الكود؟؟؟

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information