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

كود vba لشرط الرجوع عن التحديث


Abdelaziz Osman
إذهب إلى أفضل إجابة Solved by MOHAMMAD IBRAHIM,

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

وعليكم السلام

اقتباس و توضيح فقط لا اكثر

1. افتح نموذجك في وضع التصميم.
2. انقر بزر الماوس الأيمن على الحقل "dev" واختر "خصائص".
3. اذهب إلى علامة التبويب "الحدث" وابحث عن "After Update".
4. انقر على زر "..." الموجود بجوار "After Update" لفتح محرر VBA.
5. أدخل الكود التالي:

```vba
Private Sub dev_AfterUpdate()

    If Me.dev < 5000000000 Then
        MsgBox "القيمة المدخلة يجب أن تكون 5000000000 أو أكبر. سيتم التراجع عن التحديث."
        
        ' قم بإعادة الحقل إلى حالته السابقة
        Me.Undo
    End If

End Sub

### شرح الكود:
- `Private Sub dev_AfterUpdate()`: هذا هو حدث "After Update" الخاص بحقل "dev".
- `If Me.dev < 5000000000 Then`: يتحقق مما إذا كانت القيمة المدخلة أقل من 5000000000.
- `MsgBox`: يعرض رسالة تنبه المستخدم بأن القيمة المدخلة غير صحيحة.
- `Me.Undo`: يقوم بالتراجع عن التحديث وإعادة القيمة السابقة للحقل.

بهذا الشكل، إذا أدخل المستخدم قيمة أقل من 5000000000، سيظهر تحذير وسيتراجع عن التحديث.

 

 

تم تعديل بواسطه MOHAMMAD IBRAHIM
  • Like 1
رابط هذا التعليق
شارك

الزملاء الأعزاء لكم منى كل التحية والتقدير

ولكن طلبى هو يحتوى وليس يساوى 

كما أريد رسالة هل أنت موافق ب (نعم) و (لا)

واذا تم الضغط على نعم يتم عمل undo

وعند الضغط على( لا ) يتم الوقف على الحقل dev

لكتابة التحديث المناسب

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

اخي العزيز @Abdelaziz Osman ، انت عضو مميز ما شاء الله عليك ، وأكيد لا حاجة لتذكيرك بالشرح الوافي لمفهومك الذي تريد توصيله كمعلومة :yes:

اعطنا امثلة على كلمة يحتوي التي تريدها كقيمة . كمثال ( 50000000001 تحتوي على الرقم الذي ذكرته و 5000000000000 ايضاً تحتوي على الرقم الذي ذكرته )

 

شكراً للتوضيح

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

4 دقائق مضت, Foksh said:

اخي العزيز @Abdelaziz Osman ، انت عضو مميز ما شاء الله عليك ، وأكيد لا حاجة لتذكيرك بالشرح الوافي لمفهومك الذي تريد توصيله كمعلومة :yes:

اعطنا امثلة على كلمة يحتوي التي تريدها كقيمة . كمثال ( 50000000001 تحتوي على الرقم الذي ذكرته و 5000000000000 ايضاً تحتوي على الرقم الذي ذكرته )

 

شكراً للتوضيح

المثال هو " تم تنفيذ الطلبية رقم 5100152369 بتاريخ 16 اكتوبر 2024 "

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

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

if not me.dev.value like "*5?????????*" and me.t54 = 6 then

لكن للأسف تم رفضه

وكنت أريد حقل اخر معه باسم t54 يكون = 6

10 دقائق مضت, Abdelaziz Osman said:

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

if not me.dev.value like "*5?????????"* and me.t54 = 6 then

لكن للأسف تم رفضه

وكنت أريد حقل اخر معه باسم t54 يكون = 6

وكذلك وضعت هذا الكود بحدث عند الاغلاق للنموذج ولكن للأسف لم اصل للحل الصحيح

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

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

اذا كان الحقل t54=6 مع الحقل dev لا يحتوى على العدد ?????????5

يقوم الاكسيس بعمل رجوع للحقل 

Dev والحقل t54

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

16 دقائق مضت, Abdelaziz Osman said:

لا يحتوى على العدد

لا يحتوي على العدد 5 ضمن منزلة محددة كما هو في أول الموضوع ؟ أم في أي منزلة !!!!!!!

واذا كان اسم النموذج Open فهذا غير منطقي لأن الاسم من الأسماء المحجوزة في آكسيس ! :excl: !

 

على كل حال ارفق ملف أخي الكريم ..

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

  • أفضل إجابة

جرب

Private Sub Form_BeforeClose(Cancel As Integer)
    Dim userResponse As Integer
    
    ' تحقق من الشرط
    If Me.t54 = 6 Then
        If Not (Me.dev Like "5000000000") Then
            ' عرض رسالة تأكيد
            userResponse = MsgBox("هل تريد إعادة الحقل dev إلى القيمة السابقة؟", vbYesNo + vbQuestion, "تأكيد")
            If userResponse = vbYes Then
                ' قم بإعادة الحقل إلى القيمة السابقة
                Me.dev = "" ' أو قم بتغيير هذا إلى القيمة التي تريد إعادة تعيينها
                ' يمكنك أيضاً إضافة كود هنا لتخزين القيمة السابقة قبل تغييرها
            End If
        End If
    End If
End Sub

او

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim t54Value As Integer
    Dim devValue As String
    Dim response As Integer

    t54Value = Me.t54
    devValue = Me.dev

    ' تحقق إذا كانت قيمة t54 تساوي 6 وأيضاً إذا dev لا يحتوي على الرقم 5
    If t54Value = 6 And Not devValue Like "*5" Then
        ' إظهار رسالة تأكيد
        response = MsgBox("الحقل dev يجب أن يحتوي على الرقم 5. هل ترغب في الاستمرار؟", vbYesNo + vbExclamation, "تأكيد")

        If response = vbNo Then
            ' إذا اختار المستخدم "لا"، أعد الحقل t54 إلى Null أو القيمة الافتراضية
            Me.t54 = Null ' أو يمكنك تعيين قيمة معينة بدلًا من Null
            Cancel = True ' يمنع إغلاق النموذج
        End If
    End If
End Sub

 

تم تعديل بواسطه MOHAMMAD IBRAHIM
  • Like 1
رابط هذا التعليق
شارك

1 ساعه مضت, MOHAMMAD IBRAHIM said:

جرب

Private Sub Form_BeforeClose(Cancel As Integer)
    Dim userResponse As Integer
    
    ' تحقق من الشرط
    If Me.t54 = 6 Then
        If Not (Me.dev Like "5000000000") Then
            ' عرض رسالة تأكيد
            userResponse = MsgBox("هل تريد إعادة الحقل dev إلى القيمة السابقة؟", vbYesNo + vbQuestion, "تأكيد")
            If userResponse = vbYes Then
                ' قم بإعادة الحقل إلى القيمة السابقة
                Me.dev = "" ' أو قم بتغيير هذا إلى القيمة التي تريد إعادة تعيينها
                ' يمكنك أيضاً إضافة كود هنا لتخزين القيمة السابقة قبل تغييرها
            End If
        End If
    End If
End Sub

او

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim t54Value As Integer
    Dim devValue As String
    Dim response As Integer

    t54Value = Me.t54
    devValue = Me.dev

    ' تحقق إذا كانت قيمة t54 تساوي 6 وأيضاً إذا dev لا يحتوي على الرقم 5
    If t54Value = 6 And Not devValue Like "*5" Then
        ' إظهار رسالة تأكيد
        response = MsgBox("الحقل dev يجب أن يحتوي على الرقم 5. هل ترغب في الاستمرار؟", vbYesNo + vbExclamation, "تأكيد")

        If response = vbNo Then
            ' إذا اختار المستخدم "لا"، أعد الحقل t54 إلى Null أو القيمة الافتراضية
            Me.t54 = Null ' أو يمكنك تعيين قيمة معينة بدلًا من Null
            Cancel = True ' يمنع إغلاق النموذج
        End If
    End If
End Sub

 

ممتاز سيدى  ولكن  اريد ايضا خيار بديل عند الخروج 

انه إذا قام المستخدم  بالخروج قبل كتابة رفم الطلب الذى يبدأ برقم 5

يقوم الاكسيس بتغيير t54=1

و dev = "لم يتم كتابة رقم الطلب أثناء التنفيذ"

وبدون أي رسالة نعم أو لا

فقط ان امكن رسالة تنبيه مفادها "تم الغاء التحديث لم يتم كتابة رقم الطلب"

هل ممكن

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

54 دقائق مضت, Abdelaziz Osman said:

ممتاز سيدى  ولكن  اريد ايضا خيار بديل عند الخروج 

انه إذا قام المستخدم  بالخروج قبل كتابة رفم الطلب الذى يبدأ برقم 5

يقوم الاكسيس بتغيير t54=1

و dev = "لم يتم كتابة رقم الطلب أثناء التنفيذ"

وبدون أي رسالة نعم أو لا

فقط ان امكن رسالة تنبيه مفادها "تم الغاء التحديث لم يتم كتابة رقم الطلب"

اي كود تم تنفيذة ؟ لكي اقوم بتعديل عليه

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

7 دقائق مضت, Abdelaziz Osman said:

الكود الثانى

 

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim t54Value As Integer
    Dim devValue As String
    Dim response As Integer

    t54Value = Me.t54
    devValue = Me.dev

    ' تحقق إذا كانت قيمة t54 تساوي 6 وأيضاً إذا dev لا يحتوي على الرقم 5
    If t54Value = 6 And Not devValue Like "*5" Then
        ' إظهار رسالة تأكيد
        response = MsgBox("الحقل dev يجب أن يحتوي على الرقم 5. هل ترغب في الاستمرار؟", vbYesNo + vbExclamation, "تأكيد")

        If response = vbNo Then
            ' إذا اختار المستخدم "لا"، أعد الحقل t54 إلى Null أو القيمة الافتراضية
            Me.t54 = Null ' أو يمكنك تعيين قيمة معينة بدلًا من Null
            Cancel = True ' يمنع إغلاق النموذج
        End If
    End If

    ' تحقق إذا كان المستخدم يحاول الخروج بدون كتابة رقم الطلب الذي يبدأ برقم 5
    If devValue = "" Or Left(devValue, 1) <> "5" Then
        ' تعيين القيم المطلوبة
        Me.t54 = 1
        Me.dev = "لم يتم كتابة رقم الطلب أثناء التنفيذ"

        ' إظهار رسالة تنبيه
        MsgBox "تم الغاء التحديث لم يتم كتابة رقم الطلب", vbInformation, "تنبيه"
        
        Cancel = True ' يمنع إغلاق النموذج
    End If
End Sub

شرح للمتغير عن الكود السابق.

تم إنشاء شرط إضافي للتحقق إذا كان الحقل dev فارغًا أو لا يبدأ برقم 5.

إذا تحقق الشرط، نقوم بتعيين t54 إلى 1 و dev إلى "لم يتم كتابة رقم الطلب أثناء التنفيذ".

تظهر رسالة تنبيه تخبر المستخدم بأنه تم إلغاء التحديث.

يتم تعيين Cancel إلى True لمنع إغلاق النموذج إذا كانت الشروط مستوفاة.

بهذا الشكل، ستحقق ما تريده.

 

اتمني التجربة و الرد صديقي

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

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

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



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

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

Important Information