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

أرجو مساعدتي في تصحيح هذا الكود


mbdeon

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

لدي مربع  Checkbox اسمه dd 

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

 

If Me.dd = 1 Then
Dim t
t = MsgBox("åá ÃäÊ ãÊÃßÏ ãä ÑÛÈÊß ÍÐÝ ßÇÝÉ ÇáÃÕäÇÝ ãä ÇáÝÇÊæÑÉ¿", vbYesNo, "ÍÐÝ ÇáÃÕäÇÝ ãä ÇáÝÇÊæÑÉ")
If t = vbYes Then
DoCmd.SetWarnings False
DoCmd.OpenQuery "ÇÓÊÚáÇã ÍÐÝ ÝÇÊæÑÉ"
Me.dd = 0
DoCmd.SetWarnings True
Else
If t = vbNo Then
MsgBox "Êã ÇáÊÑÇÌÚ Úä ÇáÍÐÝ"
End If
If Me.dd = 0 Then
Dim r
r = MsgBox("åá ÃäÊ ãÊÃßÏ ãä ÑÛÈÊß ÅÖÇÝÉ ÇáÕäÝ ááÝÇÊæÑÉ¿", vbYesNo, "ÍÝÙ ÇáÕäÝ")
If r = vbYes Then
DoCmd.SetWarnings False

DoCmd.OpenQuery "Q1"
DoCmd.OpenQuery "Q2"
Me.dd = 1
DoCmd.SetWarnings True
Else
If r = vbNo Then
MsgBox "Êã ÇáÊÑÇÌÚ Úä ÇáÍÝÙ"
DoCmd.CancelEvent
End If
End If
End If
End If
End If

End Sub

 

 

أرجو المساعدة ولكم كل الشكر 

 

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

وعليكم السلام اخي الفاضل 🙂

 

واهلا وسهلا بك في المنتدى 🙂

 

الخطأ عندك في السطر الاول ، حيث انه لما تنقر على كائن صح/خطأ ، فعلامة الصح قيمتها -1 ، وعلامة بدون صح قيمتها 0 ،

فعليه يصبح الكود :

If Me.dd = -1 Then

 

ولكن ، ايش رأيك في هذ التنسيق ، بحيث بإستعمال TAB الكيبورد ننسق الكود ، فتصبح قراءة الكود سهله ، ونعرف كل مجموعة وين بدايتها ووين نهايتها :


    If Me.dd = -1 Then
        Dim t
        t = MsgBox("?? ??E ?E??I ?? ?UEE? ??? ?C?E C????C? ?? C??CE??E?", vbYesNo, "??? C????C? ?? C??CE??E")
            If t = vbYes Then
                DoCmd.SetWarnings False
                    DoCmd.OpenQuery "C?E??C? ??? ?CE??E"
                    Me.dd = 0
                DoCmd.SetWarnings True
            
            ElseIf t = vbNo Then
                MsgBox "E? C?E?C?? ?? C????"
            End If


    ElseIf Me.dd = 0 Then
        Dim r
        r = MsgBox("?? ??E ?E??I ?? ?UEE? ??C?E C???? ???CE??E?", vbYesNo, "??U C????")
            If r = vbYes Then
                DoCmd.SetWarnings False
                    DoCmd.OpenQuery "Q1"
                    DoCmd.OpenQuery "Q2"
                    Me.dd = 1
                DoCmd.SetWarnings True

            ElseIf r = vbNo Then
                MsgBox "E? C?E?C?? ?? C???U"
                DoCmd.CancelEvent
            End If

    End If

 

جعفر

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

الله يعطيك العافية أخي جعفر 

يال فرحتي بردك 

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

 

ما نزلت الموضوع الا لما عجزت 

 

التنسيق كذا ممتاز وشكرا لتوجيهك

على فكرة 

استفدت كثيرا من ردودك ومساعدتك للجميع في عدة مواضيع في المنتدى 

 

ويعلم الله أنني توقعت أن تكون أنت أول من يرد 

 

شكرا لك ياغالي 

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

توجد عدة ملاحظات على الكود ، ولكني سأضيف على الأستاذ جعفر هذه الملاحظة:
عند حصر الاختيار في قيمتين فقط مثل نعم ولا ، صح وخطأ فلا داعي لاستخدام ElseIf كما التالي:

If Me.dd = -1 Then
	
ElseIf Me.dd = 0 Then

End If

والأصح أن تكتب هكذا:

If Me.dd = -1 Then

Else

End If

ويمكن كتابتها بشكل مختصر كالتالي:
 

If Me.dd Then

Else

End If

 

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

 

أهلا بك أخي الكريم 

أرجو أن أكون فهمت بشكل صحيح 

تقصد ان الكود يصير بهذا الشكل؟ 

 


    If Me.dd = -1 Then
        Dim t
        t = MsgBox("?? ??E ?E??I ?? ?UEE? ??? ?C?E C????C? ?? C??CE??E?", vbYesNo, "??? C????C? ?? C??CE??E")
            If t = vbYes Then
                DoCmd.SetWarnings False
                    DoCmd.OpenQuery "C?E??C? ??? ?CE??E"
                    Me.dd = 0
                DoCmd.SetWarnings True
            
            ElseIf t = vbNo Then
                MsgBox "E? C?E?C?? ?? C????"
            End If

                          Else
        Dim r
        r = MsgBox("?? ??E ?E??I ?? ?UEE? ??C?E C???? ???CE??E?", vbYesNo, "??U C????")
            If r = vbYes Then
                DoCmd.SetWarnings False
                    DoCmd.OpenQuery "Q1"
                    DoCmd.OpenQuery "Q2"
                    Me.dd = 1
                DoCmd.SetWarnings True

            ElseIf r = vbNo Then
                MsgBox "E? C?E?C?? ?? C???U"
                DoCmd.CancelEvent
      

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

If Me.dd Then
    if vbYes = MsgBox("?? ??E ?E??I ?? ?UEE? ??? ?C?E C????C? ?? C??CE??E?", vbYesNo, "??? C????C? ?? C??CE??E") Then
        'DoCmd.SetWarnings False
        DoCmd.OpenQuery "C?E??C? ??? ?CE??E"
        Me.dd = Not Me.dd
        'DoCmd.SetWarnings True
    Else
        MsgBox "E? C?E?C?? ?? C????"
    End If
Else
    if vbYes = MsgBox("?? ??E ?E??I ?? ?UEE? ??C?E C???? ???CE??E?", vbYesNo, "??U C????") Then
        'DoCmd.SetWarnings False
        DoCmd.OpenQuery "Q1"
        DoCmd.OpenQuery "Q2"
        Me.dd = Not Me.dd
        'DoCmd.SetWarnings True
    Else
        MsgBox "E? C?E?C?? ?? C???U"
        DoCmd.CancelEvent
    End If
End If

 

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

11 ساعات مضت, mbdeon said:

التنسيق كذا ممتاز وشكرا لتوجيهك

حياك الله 🙂

 

10 ساعات مضت, Hawiii said:

ويمكن كتابتها بشكل مختصر كالتالي

شكرا جزيلا على هذه الملاحظات ، وتفسير جميل 🙂

مثل ما تلاحظ اني عملت تغيير "كبير" في قص/دمج الكود ، ولكن جميع التغييرات واضحة ،

وما حبيت ان اعمل التغيير اللي انت تفضلت به ، لأنه ليس من الكود ، والسائل ما بيفهم ، وبالتالي بيضيع ومو هذا المطلوب 🙂

 

جعفر

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

44 دقائق مضت, jjafferr said:

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

حياك الله أستاذنا جعفر ، الحقيقة كلامك يحتاج إلى توضيح:
ليس من الكود؟
مو هذا المطلوب؟

عموما أنا علقت على خطأ في كتابة الكود وأعتقد هذا هو الصح أن لا تمرر الأخطاء كمسلمات ، وإلا إذا السائل ما عرف خطأه كيف له أن يتعلم ويصلح أخطاءه أو يقلل منها!!
أنا قلت أن هناك ملاحظات على الكود ومع ذلك عند قراءتي للكود كنت واثق أنه سينفذ المطلوب ولم أشأ أن أتدخل إلا لما سألني مرة أخرى فاختصرت الموضوع وأجريت تعديل شامل بشكل نموذجي حسب اجتهادي ولو وجه السؤال لك لم تدخلت.

على كل حتى مع تصحيحك لخطأ قيمة الـ True من 1 إلى -1 ، بقى هناك تكرار لنفس الخطأ لم تلحظه.
وكذلك ملاحظتي للاستخدام الخاطئ لـ ElseIf هو كذلك مكرر في الكود ثلاث مرات وليس مرة واحدة.

عموما أنا معكم بشكل مؤقت حتى تنتهي مشكلة الكورونا ثم نتفرغ لما هو أهم بالنسبة لأولوياتي ، وأنا هنا فقط أشغل وقتي في شيء يفيد الناس ولا مشكلة عندي للانسحاب إذا كانت مداخلاتي ستسبب مشكلات لكم وأنتم أولى بهذا المنتدى مني فما أنا إلا ضيف طارئ ومؤقت.

ملاحظة وأرجو أن لا تزعلوا مني ، المنتدى في كتابة الأكواد بشكل عام متواضع ويلزمكم استقطاب خبراء فن الكتابة 🙂

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

الظاهر كلامي بالفعل يحتاج له توضيح 🙂

 

اخي الفاضل ، اما تصحيحك للكود ، فانا قلت فيه :

منذ ساعه, jjafferr said:

شكرا جزيلا على هذه الملاحظات ، وتفسير جميل 🙂

 

اما السطر الثالث :

منذ ساعه, jjafferr said:

1. وما حبيت ان اعمل التغيير اللي انت تفضلت به ، لأنه ليس من الكود ،

2. والسائل ما بيفهم ،

3. وبالتالي بيضيع ومو هذا المطلوب

 

1. من الكود الذي وضعه صاحب الموضوع ، ومن سؤاله ، يتضح مدى معرفة صاحب الموضوع بالكود ، وبالفعل ، حدسي كان في محله ، وفي مشاركته الثانية اكد هذا الكلام 🙂

لهذا السبب ، ما اردت ان اعمل تغيير جوهري في الكود حتى يفهم التصحيح اللي انا عملته ، وما اردت ان اعمل اي تغيير خارج الكود كذلك حتى يفهم  التصحيح اللي انا عملته 🙂
2. والسبب في كل هذا ، حتى السائل يفهم التعديل اللي انا عملته ، وما يضيع ،

3. اما اذا ما فهم التعديل ، فبالتالي بيضيع ، ومو هذا المطلوب بالشرح 🙂

 

وانا والاستاذ رمهان دائما في اخذ وعطاء في موضوع الكود ، فهو ماشاءالله محترف في التخزيل والاختصار (وهذا هو الاحتراف) ، بينما انا اشرح بخطوات اكثر (وليس هذا بالاحتراف) ،

ولكن وجهة نظري هي ، ان السائل لن يفهم الكود المقتضب ، ولن يستطيع تعديله في المستقبل ، لهذا السبب اتعمد الكود الاطول (او يمكن لأني من المدرسة القديمة وما اخذت اي دروس في البرمجة !!) ،

 

26 دقائق مضت, Hawiii said:

عموما أنا معكم بشكل مؤقت حتى تنتهي مشكلة الكورونا ثم نتفرغ لما هو أهم بالنسبة لأولوياتي ، وأنا هنا فقط أشغل وقتي في شيء يفيد الناس ولا مشكلة عندي للانسحاب إذا كانت مداخلاتي ستسبب مشكلات لكم وأنتم أولى بهذا المنتدى مني فما أنا إلا ضيف طارئ ومؤقت.

اذن الحمدلله ان فايروس كورونا منه فائدة ، وهو وجودك معانا ، فأهلا وسهلا بك اخي الفاضل معانا في كل وقت 🙂

 

27 دقائق مضت, Hawiii said:

ملاحظة وأرجو أن لا تزعلوا مني ، المنتدى في كتابة الأكواد بشكل عام متواضع ويلزمكم استقطاب خبراء فن الكتابة 🙂

اعضاء منتديات البرمجة العالميه بوجه عام ، متطوعين ، وما كلهم بنفس المستوى ، ولكن الهدف هنا مساعدة الآخرين ،

ونرحب بوجود المحترفين ، ونرحب بوجودك معنا ، وهذا الميدان يا حميدان 🙂

 

جعفر

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

للتو انتبهت أنك عدلت على كود السائل ، وللتو عرفت ما يريد من الكود لأن العربي كان غير مقروء ، وتعديلي كان "عمياني" بدون أن أفهم الرسائل 🙂
لقد قمت بتصميم نموذج وإضافة Checkbox باسم dd ولصق كود السائل في حدث AfterUpdate وبعد أن أصبحت نصوص الرسائل مقروءة ، أنصح السائل أن يعمل زرين أحدهما للإضافة وأخر للحذف أفضل من هذه الطريقة الغريبة!! ، وربما له هدف لا نعرفه من هذه الطريقة فإذا عرف السبب بطل العجب.

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

في الواقع المنتديات عالم بذاته ، وبالخصوص المنتديات العربية ، ومختلف عن عالمنا الذي نعيش فيه ،

وشوي شوي بدأت اتاقلم عليه ، ومازلت احاول 🙂

فأهلا وسهلا بك في التأقلم في هذا العالم 🙂

 

جعفر

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

8 ساعات مضت, Hawiii said:

للتو انتبهت أنك عدلت على كود السائل ، وللتو عرفت ما يريد من الكود لأن العربي كان غير مقروء ، وتعديلي كان "عمياني" بدون أن أفهم الرسائل 🙂
لقد قمت بتصميم نموذج وإضافة Checkbox باسم dd ولصق كود السائل في حدث AfterUpdate وبعد أن أصبحت نصوص الرسائل مقروءة ، أنصح السائل أن يعمل زرين أحدهما للإضافة وأخر للحذف أفضل من هذه الطريقة الغريبة!! ، وربما له هدف لا نعرفه من هذه الطريقة فإذا عرف السبب بطل العجب.

الكود أخي الحبيب لتشغيل  استعلام تحديث للمخذون واعتماد بنود الفاتورة في نموذج فرعي مستمر وفي حال التأشير على خانة الاختيار يتم تشغيل الاستعلام وتحديث الكمية في المخزون وعندما يتم إلغاء التأشير يتم تشغيل استعلام تحديث لتحديث الكمية وحذف البند من الفاتورة أما وضع زرين أحدهما للإضافة والآخر للحذف فلا أرى أنه عملي خصوصا أن المستخدم قد يقوم بتكرار الحفظ وبالتالي تنفيذ الاستعلام لأكثر من مرة ولكن كونه مربع اختيار يجعل المستخدم يقوم بالتأشير عليه لمرة واحدة ويتضح له أنه تم حفظه وعند إلغاء التأشير يتم تشغيل استعلام الحذف وبالتالي نحافظ على المخزون صحيحاً 

 

لاحظ الصورة المرفقة 

 

ملاحظة لو لدى أحدكم طريقة أخرى لأداء العملية فأرحب بأي اقتراحات 

فاتورة.JPG

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

أيضاً مفيد في حفظ الفاتورة بحيث لو وجد مربع بدون تحديد تظهر رسالة تفيد بعدم حفظ جميع بنود الفاتورة وبالتالي إما إزالة البند من الفاتورة وإما حفظه قبل تفعيل الحفظ عندها يتم تفعيل الطباعة وبدون ذلك لن يتم الحفظ وفي حال عدم الحفظ لن تتم الطباعة 

فاتورة2.JPG

تم تعديل بواسطه mbdeon
إضافة مرفق
رابط هذا التعليق
شارك

وهذا يأخذنا إلى سؤال آخر !!

 

هل يمكن تنفيذ شرط يستند إلى مربع اختيار ضمن نموذج مستمر ؟؟

مثلا بوضع شرط كود الصنف مثلاً (لأنه حقل فريد) 

 

إذا نعم أرجو الإفادة بالكود المناسب 

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

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

مع ملاحظة أنه يمكنك أن تنقذ كل الأوامر المطلوبة في النموذج الفرعي من خلال النموذج الأب/الأساس ، الأخوة لن يقصروا معك ، وأنصحك بالمحاولة والتجربة قبل السؤال والحصول على أجوبة سريعة لن تتعلم منها.

وسامحوني أنا بعض المصطلحات والمسميات لا أفهما.

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

18 ساعات مضت, Hawiii said:

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

مع ملاحظة أنه يمكنك أن تنقذ كل الأوامر المطلوبة في النموذج الفرعي من خلال النموذج الأب/الأساس ، الأخوة لن يقصروا معك ، وأنصحك بالمحاولة والتجربة قبل السؤال والحصول على أجوبة سريعة لن تتعلم منها.

وسامحوني أنا بعض المصطلحات والمسميات لا أفهما.

تسلم يا غالي 

 

فعليا كل ما وصلت له في حياتي هو بالمحاولة والخطأ 

 

وعادة لا أطلب المساعدة إلا عندما أتيقن بوصولي لطريق مسدود 

 

 

20 ساعات مضت, mbdeon said:

وهذا يأخذنا إلى سؤال آخر !!

 

هل يمكن تنفيذ شرط يستند إلى مربع اختيار ضمن نموذج مستمر ؟؟

مثلا بوضع شرط كود الصنف مثلاً (لأنه حقل فريد) 

 

إذا نعم أرجو الإفادة بالكود المناسب 

من لديه أي إفادة أرجو المساعدة ولكم كل الشكر 

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

23 ساعات مضت, mbdeon said:

أيضاً مفيد في حفظ الفاتورة بحيث لو وجد مربع بدون تحديد تظهر رسالة تفيد بعدم حفظ جميع بنود الفاتورة وبالتالي إما إزالة البند من الفاتورة وإما حفظه قبل تفعيل الحفظ عندها يتم تفعيل الطباعة وبدون ذلك لن يتم الحفظ وفي حال عدم الحفظ لن تتم الطباعة 

فاتورة2.JPG

كما تلاحظ في فاتورة البيع يجب أن يقوم المستخدم بحفظ الصنف عن طريق تحديد خانة الاختيار لكل صنف ثم حفظ الفاتورة ليتم تحديث عدة حقول مرتبطة برأس الفاتورة وذلك بالضغط على زر حفظ الفاتورة في أسفل النموذج 

 

المطلوب ألا يتمكن من تنفيذ زر حفظ الفاتورة إلا عندما تكون جميع خانات الاختيار محددة لكل صنف وفي حال لم تكن جميعها محددة تظهر للمستخدم رسالة بأن بعض بنود الفاتورة  لم تحفظ ويجب حفظها أو إزالتها 

 

 

أرجو أن تكون الفكرة واضحة 

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

  • 1 month later...
في ١٠‏/٤‏/٢٠٢٠ at 23:27, jjafferr said:

الافضل ان تضع مثال علشان نفهمه ، وعلى اساسه نعطيك الجواب 🙂

 

جعفر

 

2 ساعات مضت, mbdeon said:

مازلت في انتظار مساعدتك أخي الكريم 

يقصد الاستاذ جعفر  بالمثال هو ان تضع مرفقا مصغرا  تظهر المشكلة فيه ويمكن التعديل عليه

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

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