منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : for next loop
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
ماهو الخطأ في هذا الloop لانه لا يعمل وما الفرق عندما اضع الloop يبدأ ب 1 أو ب0 لاني عندما اضع 0 في هذا المثال يعمل الloop ولكن لمرة واحدة فقط وعندما اضع
1 لا يعمل اصلا

Dim i As Integer
For i = 1 To rest_sum < sum2
Dim comselect3 As New SqlCommand(" select p_id from table1 where p_id<>0 and counted=0 order by p_id", con)
Dim d3 As New DataSet
Dim t3 As New SqlDataAdapter
t3.SelectCommand = comselect3
t3.Fill(d3, "table1 ")
If d3.Tables("table1 ").Rows.Count <> 0 Then
p_id = d3.Tables("table1 ").Rows(0)(0)
End If
Dim comupdate As New SqlCommand("update table1 set pay_status=1 , counted=1 where id='" & Val(TextBox2.Text) & "' and P_id='" & P_id & "'", con)


con.Open()
comupdate.ExecuteNonQuery()
con.Close()
If con.State = ConnectionState.Open Then con.Close()


rest_sum = Val(rest_sum) - Val(sum2)
If rest_sum < sum2 Then
Exit For
End If
Next
الخطأ في وضع rest_sum < sum2 مع For
ان ناتج rest_sum < sum2 سيكون قيمة منطقية يعني True أو False والتي ستساوي -1 أو 0 ولا شيء غيرها


قد تقصد
كود :
For i =1 To rest_sum
لاني اريد الloop يعمل لنهاية وهذه النهاية غير محددة بعدد مرات يتم تحديدها بقيمة رقمية ولكن اريده يعمل حتى يصبح المبلغ المحدد اقل من المبلغ الاخر
فكيف يمكن عمل ذلك

(23-05-17, 12:57 PM)alma2 كتب : [ -> ]الخطأ في وضع rest_sum < sum2 مع For
ان ناتج rest_sum < sum2 سيكون قيمة منطقية يعني True أو False والتي ستساوي -1 أو 0 ولا شيء غيرها


قد تقصد
كود :
For i =1 To rest_sum
اثناء الدقيق في الكود ودت انه لا حاجة لعمل For لأنه لن يتم عمل Update سوى مرة واحدة هذا في حالة وجد counted = 0

لأنه قيمة counted ستكون = 1 بعد Insert

وبهذا فإن الكود لن يعمل بشكل Loop هذا اذا افترضنا أن قيمة المتغير p_id =0 عند بداية تنفيذ الكود
يا أخي اذا اردت ان تعمل حلقة تنتهي بشرط معين
فاستعمل While..Loop وليس For..Next