ورود

View Full Version : نحوه استفاده از حلقه هاي تكرار



iman2023
شنبه 29 تیر 1387, 07:05 صبح
سلام. من جدولي دارم كه هر از چند وقت يكبار بايد با استفاده از حلقه تكرار عملياتي روي ركوردهاي اون انجام بدم. اما مشكلم اينه كه هر دفعه تعداد ركوردها متغيره. حالا ميخوام بدونم چطور ميشه حلقه تكراري نوشت بدون اينكه پايان حلقه دقيقاً براش مشخص بشه خودش تا انتهاي ركوردهاي مدنظر بره و با پايان يافتن ركوردها حلقه رو تموم كنه.
مثلاً اگر 50 ركورد داشته باشيم. بجاي اينكه بنويسيم For i=1 to 50 بجاي 50 چي بايد بنويسيم.

ehsan_y
شنبه 29 تیر 1387, 07:13 صبح
سلام
به دو صورت ميشه اين كارو كرد
1- با استفاده از تابع eof: وقتي شما توي آخرين ركورد باشيد مقدار اين تابع برابر با true مي شه .
2- با استفاده از تابع x = rst.RecordCount كه به جاي rst نام ركوردست خودتونو بايد بنويسيد اونوقت x همون چيزيه كه به جاي 50 بايد قرار بديد .

iman2023
شنبه 29 تیر 1387, 07:24 صبح
ميشه كاملتر توضيح بدين. كدش رو بنويسين

ehsan_y
شنبه 29 تیر 1387, 07:38 صبح
Set db = CurrentDb
Set rst = db.OpenRecordset("نام جدول مورد نظر")
x = rst.RecordCount

براي مورد دوم هم بايد از حلقه do استفاده كني و شرط رو برابر قرار بدي با true بودن eof البته اگه از كوري يا تيبلي استفاده مي كني كه لينك شده است به اجبار بايد از حالت دوم استفاده كني در غير اينصورت همون اولي جواب مي ده .

iman2023
شنبه 29 تیر 1387, 07:54 صبح
اقا ايراد اين كد چيه؟
Do
Me.VaznKhales = 1111
DoCmd.GoToRecord , , acNext
While EOF = True

iman2023
شنبه 29 تیر 1387, 08:03 صبح
اقا من اين كد رو نوشتم ولي پيغام ميده cannot update. database or object is read-only.
Set db = CurrentDb
Set rst = db.OpenRecordset("Query1")
x = rst.RecordCount

For i = 1 To x
rst.Fields("VaznKhales").Value = 1111
Next i

ehsan_y
شنبه 29 تیر 1387, 08:25 صبح
Set db = CurrentDb
Set rst = db.OpenRecordset("table")

'-------------------------------
Do Until rst.EOF = True
x = x + 1
rst.MoveNext
Loop

x تعداد ركوردهاست .