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

دالة لتكرار الكود بشرط


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

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

السلام عليكم 

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

مثلآ لدي مربع من نوع رقم قيمته 5 

و لدي الكود الذي أريد تنفيذه

المطلوب  تكرار الكود بحسب قيمة المربع اي 5 مرات مثلأ

استخدمت دالة loop مع الاسف لم أنجح

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

دوال التكرار كثيرة ... انظر وطبق 

الأول:  الدالة For

Dim i As Integer, k As Integer
k = 4
For i = k To 1 Step -1
    MsgBox i
Next i
الثاني:  الدالة Do While

Dim i As Integer
i = 4
Do While i >= 1
   MsgBox i
   i = i - 1
Loop
الثالث:  الدالة Do Until

Dim i As Integer
i = 4
Do Until i < 1
   MsgBox i
   i = i - 1
Loop
الرابع:  الدالة Do.....Loop Until 

Dim i As Integer
i = 4
Do
   MsgBox i
   i = i - 1
Loop Until i < 1
الخامس:  الدالة Do.....Loop While 

Dim i As Integer
i = 4
Do
   MsgBox i
   i = i - 1
Loop While i >= 1

 

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

أخي محمد عبدالله .. لتطبيق الدوال التي تفضل بها أخي محمد البرناوي .. أكتب هكذا :

Dim i As Integer, k As Integer

k = Me.NumberTxt ' تخزن القيمة الموجودة في مربع النص في المتغير

For i = 1 To k

    << تضع هنا الأمر المراد تكراره >>

Next i

 🙂 

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

حياكم الله أساتذتي الكرام

أعتذر عن تأخري في الرد على هذا الموضوع الهام لإنشغالي في العمل

و جزاكم الله خيرآ على هذه المعلومات القيمة

و لكن مع الأسف لم ينجح تنفيذ الكود لدي !!!

الملف في المرفقات إن تكرمتم :fff:

testUP.accdb

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

الان, Barna said:

الكود شغال .... ماذا تريد بالضبط ... ممكن شرط مبسط ؟؟؟

حياك الله أستاذي الكريم

المطلوب تحديد علامة false للحقل tag الموجود ضمن جدول hmola

علمآ أن الكود موجود ضمن النموذج tag الزر U1

الكود يقوم بتحديد FALSE للبيانات الموجودة ضمن الجدول hmola و لكن بشرط أن يكون رقم البيان مطابق للمعلومات الموجودة ضمن النموذج الفرعي tag1 الموجود ضمن النموذج tag

اي أن التحديث سيتم على الجدول hmola و ليس tag1

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

19 دقائق مضت, محمد عبد الله ٢ said:

حياك الله أستاذي الكريم

المطلوب تحديد علامة false للحقل tag الموجود ضمن جدول hmola

علمآ أن الكود موجود ضمن النموذج tag الزر U1

الكود يقوم بتحديد FALSE للبيانات الموجودة ضمن الجدول hmola و لكن بشرط أن يكون رقم البيان مطابق للمعلومات الموجودة ضمن النموذج الفرعي tag1 الموجود ضمن النموذج tag

اي أن التحديث سيتم على الجدول hmola و ليس tag1

جرب هذا الكود بدل الموجود لديك ........................

    On Error Resume Next
    If IsNull(Me.tslsul) Then
    Me.Undo
    Me.U1.SetFocus
    Else
    If MsgBox("هل تريد الحذف فعلاً ؟", vbYesNo + vbCritical + vbMsgBoxRight + vbDefaultButton2, "تحذير") = vbNo Then
        Me.U1.SetFocus
        Exit Sub
    Else
DoCmd.SetWarnings False
        DoCmd.RunSQL " UPDATE tag1 INNER JOIN hmola ON tag1.byan = hmola.BYAN SET hmola.tag = False;"
DoCmd.SetWarnings True

        DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True
        Me.Refresh
        MsgBox "تمت عملية الحذف بنجاح", , "تم"
        Me.U1.SetFocus
     End If
    End If

 

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

6 دقائق مضت, Barna said:

جرب هذا الكود بدل الموجود لديك ........................

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

ولكن هذا الكود يقوم بتحديد كل القيمة  في الحقل tag ضمن الجدول hmola ك false

 

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

 

24 دقائق مضت, محمد عبد الله ٢ said:

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

ولكن هذا الكود يقوم بتحديد كل القيمة  في الحقل tag ضمن الجدول hmola ك false

 

هل جربت الكود يا اخ محمد

ليس الجميع بل يقوم بتحديث الحقل حسب رقم البيان في الجدول tag1 تمع في الكود 

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

1 دقيقه مضت, ابو البشر said:

 

هل جربت الكود يا اخ محمد

ليس الجميع بل يقوم بتحديث الحقل حسب رقم البيان في الجدول tag1 تمع في الكود 

كلام اخي ابا البشر ... صحيح

ولكن هل الجدول tag1 يحوي سجلات غير المعروضة في النموذج الفرعي

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

الان, ابو البشر said:

هل جربت الكود يا اخ محمد

تحياتي أستاذ ابو البشر :fff:

نعم جربته و هو يقوم بتحديد false لكل القيم الموجودة في الحقل [tag]![hmola] 

1 دقيقه مضت, Barna said:

ولكن هل الجدول tag1 يحوي سجلات غير المعروضة في النموذج الفرعي

نعم 

يوجد علاقة بين الجدول tag و الجدول tag1 بحيث يتم عرض الرقم المشترك بينهما

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

7 دقائق مضت, محمد عبد الله ٢ said:

يوجد علاقة بين الجدول tag و الجدول tag1 بحيث يتم عرض الرقم المشترك بينهما

أما بالنسبة للجدول hmola فلا توجد اي علاقة بينهما

 

1 دقيقه مضت, Barna said:

طيب .. انا على الموبايل ... ارجع ووافيك

بالسلامة ان شاء الله 

حياك الله و جعل عملك في ميزان حسناتك :fff:

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

منذ ساعه, Barna said:
 DoCmd.RunSQL " UPDATE tag1 INNER JOIN hmola ON tag1.byan = hmola.BYAN SET hmola.tag = False;"

        DoCmd.RunSQL " UPDATE tag1 INNER JOIN hmola ON [tag1].form![byan] = hmola.BYAN SET hmola.tag = False;"
استبدلت

tag1.byan

ب [tag1].form![byan] يقوم الكود بتحديث اول سجل فقط و الباقي لا يتم تحديثه

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

16 دقائق مضت, محمد عبد الله ٢ said:

        DoCmd.RunSQL " UPDATE tag1 INNER JOIN hmola ON [tag1].form![byan] = hmola.BYAN SET hmola.tag = False;"
استبدلت

tag1.byan

ب [tag1].form![byan] يقوم الكود بتحديث اول سجل فقط و الباقي لا يتم تحديثه

طيب جرب كودك الان ....................

    On Error Resume Next
    If IsNull(Me.tslsul) Then
    Me.Undo
    Me.U1.SetFocus
    Else
    If MsgBox("هل تريد الحذف فعلاً ؟", vbYesNo + vbCritical + vbMsgBoxRight + vbDefaultButton2, "تحذير") = vbNo Then
        Me.U1.SetFocus
        Exit Sub
    Else
  Dim i As Integer, k As Integer
'k = tag1![COU] 'و مهمته هي حساب عدد السجلات لتكرار الكود' ' المربع موجود في النموذج لفرعي Tag1
Me.tag1.SetFocus
DoCmd.GoToRecord , , acFirst
For i = 1 To [Forms]![Tag]![tag1].Form![COU]
    DoCmd.SetWarnings False
            DoCmd.RunSQL " UPDATE hmola SET hmola.tag = false WHERE (((hmola.byan)=[Forms]![tag]![tag1].Form![byan]));"
    DoCmd.SetWarnings True
    DoCmd.GoToRecord , , acNext
Next i
        DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True
        Me.Refresh
        MsgBox "تمت عملية الحذف بنجاح", , "تم"
        Me.U1.SetFocus
     End If
    End If

 

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

24 دقائق مضت, Barna said:
 DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True
        Me.Refresh
        MsgBox "تمت عملية الحذف بنجاح", , "تم"
        Me.U1.SetFocus

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

الآن يعمل على الجدول hmola تمامآ

و يقف و لا ينفد بقية الكود 👆

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

  • أفضل إجابة
12 دقائق مضت, محمد عبد الله ٢ said:
DoCmd.RunCommand acCmdDeleteRecord

أقصد هذا الجزء من الكود المسؤول عن مسح السجل الموجود في جدول Tag 

تفضل جرب ...............

    On Error Resume Next
    If IsNull(Me.tslsul) Then
    Me.Undo
    Me.U1.SetFocus
    Else
    If MsgBox("هل تريد الحذف فعلاً ؟", vbYesNo + vbCritical + vbMsgBoxRight + vbDefaultButton2, "تحذير") = vbNo Then
        Me.U1.SetFocus
        Exit Sub
    Else
  Dim i As Integer, k As Integer
'k = tag1![COU] 'و مهمته هي حساب عدد السجلات لتكرار الكود' ' المربع موجود في النموذج لفرعي Tag1
Me.tag1.SetFocus
DoCmd.GoToRecord , , acFirst
For i = 1 To [Forms]![Tag]![tag1].Form![COU]
    DoCmd.SetWarnings False
            DoCmd.RunSQL " UPDATE hmola SET hmola.tag = false WHERE (((hmola.byan)=[Forms]![tag]![tag1].Form![byan]));"
    DoCmd.SetWarnings True
    DoCmd.GoToRecord , , acNext
Next i
[Forms]![Tag]![esm].SetFocus
        DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True
        Me.Refresh
        MsgBox "تمت عملية الحذف بنجاح", , "تم"
        Me.U1.SetFocus
     End If
    End If

 

  • Like 1
  • Thanks 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