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

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

Dim i As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb

'حيث Table 1 يحتوى على عمود به القيم التى يراد التأكد من مطابقتها
 ("Set rs = db.OpenRecordset("Table1

For i = 0 To 2

'حيثNo هو الرقم الموجود في الجدول ويراد التأكد من مطابقته معMe.MNo 
If rs!No.Value = Me.MNo Then

'حيث Dashbord هو النموذج المراد فتحه في حالة تحقق الشرط
"DoCmd.OpenForm "Dashboard
Else
If rs!No.Value <> Me.MNo Then

'حيث Copyهو النموذج المراد فتحه في حالة عدم تحقق الشرط
"DoCmd.OpenForm "Copy
End If

End If
Next i

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

يرجى المساعدة في حل ه\ه المشكلة ولكم جزيل الشكر

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

الكود بالشكل بالتالي يعمل ان شاء الله

Dim i As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim x As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1")
    
    x = rs!No.Value

    For i = 0 To 2
        If x = Me.MNo Then
            DoCmd.OpenForm "Dashboard"
        ElseIf x <> Me.MNo Then
            DoCmd.OpenForm "Copy"
        End If

    Next i

واعتقد انك لو استخدمت الكود بدون For ... Next سيكون افضل

Dim i As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim x As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1")
    
    x = rs!No.Value

        If x = Me.MNo Then
            DoCmd.OpenForm "Dashboard"
        ElseIf x <> Me.MNo Then
            DoCmd.OpenForm "Copy"
        End If

تحياتي

10 دقائق مضت, خالد سيسكو said:

السلام عليكم

المفروض يكون الكود بدالة (if ) كالتالي

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

ولك الشكر

تحياتي

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

وهذه طريقة بدالة Case

Dim i As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim x As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1")

    x = rs!No.Value

    Select Case Me.MNo
    
        Case Me.MNo
    
            If x = Me.MNo Then
               DoCmd.OpenForm "Dashboard"
            Else
               DoCmd.OpenForm "Copy"
            End If
    
        Case Else
    End Select

تحياتي

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

شكرا ابو الكرم 

تم التغيير ولكن نفس المشكلة

الجدول به عدة صفوف للحقل No منهم قيمة واحدة صحيحة

ما اريده هو ان يتم فحص هذه القيمه في كل صفوف الجدول وفي حالة تحقق الشرط يتم فتح النموذج المطلوب Dashbord وفي حالة عدم التحقق يتم فتح نموذ أخر  Copy

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

شكرا لكل الأستاذة الافاضل الذين تفاعلوا مع طلبى 

جازاكم الله كل خير 

توضيح إضافي 

هناك قيمة في النموذج المسمى Dashboard في ال Text Box المسمى MNo تساوى 1 

وهناك مجموعة من القيم  في الجدول Table 1  في العمود No

المطلوب هو 

عندما تتطابق القيمة في النموذج المسمى Dashboard في ال Text Box المسمى MNo مع اي من القيم في الجدول Table 1  في العمود No

يظل النموذج المسمى Dashboard

وعنندما لا تتطابق القيمة في النموذج المسمى Dashboard في ال Text Box المسمى MNo مع اي من القيم في الجدول Table 1  في العمود No

يتم فتح النموذج المسمى Copy  فوق النموذج المسمى Dashboard

مرفق ملف

 

Loop.rar

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

تفضل اخي الكريم

Private Sub Form_Open(Cancel As Integer)
Dim i As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim x As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("Table1")

    x = rs!No.Value

    Select Case Me.MNo
    
        Case Me.MNo
    
            If x = Me.MNo Then
               DoCmd.OpenForm "Dashboard"
               DoCmd.Close acForm, "Copy"
            Else
               DoCmd.OpenForm "Copy"
               DoCmd.Close acForm, "Dashboard"
            End If
    
        Case Else
    End Select

End Sub

Loop.rar

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

شكرا أبو عبد الله

المرفق كان مثال من البرنامج لان البرنامج كبير الحجم ولا يمكن رفعه

عند تطبيق الكود على البرنامج الاساسي تظهر رسالة Overflow

ولا يتم التنفيذ

يرجى توضيح السبب

شكرا

 

Overflow.png

Code.png

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

يبدو انك تسحدم متغيرات كثيرة في البرنامج

استبدل

Integer
بـ
Long


كما اشار استاذنا @AlwaZeeR

3 ساعات مضت, AlwaZeeR said:

Dim x As Integer

الى


Dim x As Long

 

تحياتي

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

44 دقائق مضت, أبو إبراهيم الغامدي said:

السلام عليكم.. 

للأسف.. الحلول غبر متوقعة ومحبطة للغاية..

وعليكم السلام ورحمة الله وبركاته استاذنا الفاضل

لم افهم كلامك جيداً

فبرجاء التوضيح بارك الله فيك

تحياتي

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

6 ساعات مضت, Emad Fawzy Armanious said:

ما اريده هو ان يتم فحص هذه القيمه في كل صفوف الجدول وفي حالة تحقق الشرط يتم فتح النموذج المطلوب Dashbord وفي حالة عدم التحقق يتم فتح نموذ أخر  Copy

تفضل اخي الكريم لم انتبه من البداية لهذه الجملة

Loop.rar

تحياتي

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

منذ ساعه, محمد ابوعبد الله said:

لم افهم كلامك جيداً

أ. محمد.. أنت تفحص سجلات لم تتحرك من مكانها.. لكونها لا تتضمن المنهج  (MoveNext) لتدوير السجلات

الأمر الآخر أن السائل يريد عمل دورة السجلات وفتح النماذج لغرض معين لم يفصح عنه! وهذا أحد الإرباكات في السؤال! لكون النماذج سوف تقوم بالتبديل بين الفتح والإغلاق بسرعة كبيرة حتى آخر سجل يقف عليه المؤشر!  

أما المشاركة الأخيرة فليست ضمن دائرة السؤال

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

معك حق استاذنا الفاضل فعلا كلامك صحيح 100% ومنك نستفيد ان شاء الله دائماً

ارجو ان يكون الملف المرفق يفي بالغرض

والشكر لك استاذنا

Loop.rar

تحياتي

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

15 ساعات مضت, خالد سيسكو said:

السلام عليكم

المفروض يكون الكود بدالة (if ) كالتالي


If rs!No.Value = Me.MNo Then
DoCmd.OpenForm "Dashboard"
Else
DoCmd.OpenForm "Copy"
End If

 

 

7 ساعات مضت, أبو إبراهيم الغامدي said:

السلام عليكم.. 

للأسف.. الحلول غبر متوقعة ومحبطة للغاية.. كما أن السؤال مربك

 

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

 

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

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

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



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

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

Important Information