تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سؤال حول جملة for
#1
مســاء الخير يا جماعه


من المعروف أن جملة for  حلقه دوران لعمل شي معين لحين الأنتهاء منه 


السؤال لو كان لدي كود بهذه الطريقه 

كود :
   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

       For index = 0 To dt.Rows.Count - 1
           x = dt(index)(0)
           Dim cmd As SqlCommand
           cmd = New SqlCommand("UpdateTBL_22", con)
           cmd.CommandType = CommandType.StoredProcedure
           Dim Parma(1) As SqlParameter
           Parma(0) = New SqlParameter("@ID", SqlDbType.Int) With {.Value = x}
           Parma(1) = New SqlParameter("@ysers", SqlDbType.Int) With {.Value = "700"}
           cmd.Parameters.AddRange(Parma)
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()


       Next
       MsgBox("ok")
   End Sub


يعني ما عملت Exit For 

هل يسبب تعليق أو تأخير في النظام
الرد }}}
تم الشكر بواسطة:
#2
مساء النور

أولا : Exit For تستخدم للخروخ من الحلقة قبل إنتهائها. 
        على سبيل المثال حلقة في منتصفها وجدة ما تبحث عنة أو إنتهيت من القيام بعمل معين, لماذا تكمل الحلقة وأنت قد وجدة ما تبحث عنة, لذلك تستخدم Exit For



ثانياً : إذا كنت قلق من التأخير , فيجب أن تعيد النظر في مسألة فتح وإغلاق الإتصال في كل حلقة تكرار.
         فتح وإغلاق الإتصال في كل حلقة تكرار سيسبب الكثير من التأخير , وأنت في غنى عن إغلاق وإعادة فتح الإتصال في كل حلقة.
         لو قلت لك امسك قلم حبر واكتب على ورقة بيضاء كلام من أختيارك على الأقل 20 كلمة!!!!!
         السؤال : هل ستفتح غطاء القلم وتغلقة بعد كل كلمة؟ أم أنك ستفتح الغطاء مرة واحدة ثم تبداء بالكتابة وعند الإنتهاء كلياً تقوم بإغلاق غطاء القلم؟؟؟؟؟؟



لاحظ هنا فتح وإغلاق الإتصال خارج الحلقة For

كود :
  Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

      con.Open()  <<<---------------
      For index = 0 To dt.Rows.Count - 1
          x = dt(index)(0)
          Dim cmd As SqlCommand
          cmd = New SqlCommand("UpdateTBL_22", con)
          cmd.CommandType = CommandType.StoredProcedure
          Dim Parma(1) As SqlParameter
          Parma(0) = New SqlParameter("@ID", SqlDbType.Int) With {.Value = x}
          Parma(1) = New SqlParameter("@ysers", SqlDbType.Int) With {.Value = "700"}
          cmd.Parameters.AddRange(Parma)
         
          cmd.ExecuteNonQuery()
      Next
      con.Close()   <<<---------------

      MsgBox("ok")
  End Sub
الرد }}}
#3
اهلاً بك اخى DOX.1

الامر For نس الفكرة ولكن بطريقة الاصح
تخيل بقول ابداء العد من 1 الى 100 بطبيعة الحال 
لما تبداء العد ستنتهى عند رقم 100

اهو هنا For يقوم بتطبيق ده وهو لا يتعامل مع اى شئ الا بالاعداد
حتى عندما تمرر له نصوص يقوم هو بالتعامل معها بالاعداد

فانت هنا استخدامت
كود :
      For index = 0 To dt.Rows.Count - 1

حيث ان Index هو قيمة رقمي ويبداء بـ 0
وحيث ان dt.Rows.Count هو عدد اسطر الداتا خريد فلول 
مثلاً لديك 10 قيم فاصبح يري القيمة 10 للوقوف عندها

فانت الان كما لو تقول يا لان ابداء العد من 1 الى 10 
لكن بما ان العد هنا يبداء من 0
فاصبحت النطق لها يا فلان ابداء العد من 0 الى 10 - 1 بمعنى 0 الى 9

والكود الذى بداخل For ما هو الا كود انت تريد تنفيذه
مثل اضاة قيمة فى كل مرة الى قاعدة البيانات أو عرض رسالة او تخزين يم بالذاكرة

طيب الى هنا تمام متى يتم استخدام Exit For وما وظيفتها
فى البداية Exit For هو عبارة عن انهاء العد مهما كان الوضع
يعنى مثلاً لو قلت لك قم بالعد من 1 الى 10 وانت فى وسط العد قت لك
لحظة خلاص مش عايزك تعد فانت هنا وقت حتى وو كنت عند العدد 2

طيب متى يتم الاستخدم وكيف تستخدم
تخيل انك تريد عمل بحث عن قيمة فى الداتا جريد فى 10 صفوف مثلاً الموجود
عن اسم ما او قيمة ما فى اى صف 

فلما انت عملت الامر For وهو العد من 0 الى 9 
وضعت بداخله كود تحقق من قيمة لكل خلية كل صف
واذا تحقق وتم ايجاد القيمة المطلوبة فهنا انت لست بحاجة بان For يكمل باقى العد
لتوضح اكتر For بيعد من 0 الى 9 ولاحظ عنه عند وصوله لـ 3 وجد القيمة المطلوبة
فانت تقول له استريح الان فلا داعي من استكمال العد بدون اى فائدة فتوقف 
اهو كلمة توقف هنا تعنى جملة Exit For طيب لو كنت تريده ان يستكمل 
لعل كون فى صق اخر يحتوى على نفس القيمة فهنا انت لست بحاجة لاستخدام Exit For نهائي

اتمنى ان يكون الشرح بسيط وانه موضح كلياً من امر For

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , princelovelorn , princelovelorn , DOX.1 , DOX.1



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم