PDA

View Full Version : حرفه ای: مشکل ایجاد رکورد به صورت متوالی و به تعدادمساوی



saeed2142
شنبه 20 فروردین 1390, 14:59 عصر
باسلام
نمونه زیر مثالی است دررابطه با ایجادتعداد12ماه از جدول لست کالا به این ترتیب که من اطلاعات را از جدول لیست کالا به جدول کالا برده واز هرکالا 12رکورد به هدف 12ماه ایجادمی کنم حالا قصد دارم فیلد ماه را برای هر گروه 12تایی کالا از 1تا 12ایجادکنم ومشکل ایجاست چون از طریق where کد کالا را به تکست me.kallcod اتصال وفیلتر نمودم عملیات زمانی تحقق پیدامی کند که من روی رکورد مربوطه کلیک کنم ودرنمونه واقعی من با 10000رکورد روبرو هستم که امکان پذبر نیست لطفا راهی بهم بگین که بتوتم به تمام رکورد ها را یک به یک صدازده وآنهای که مشابه هستند از 1تا12مقداردهم نمونه پیوست است
با تشکر

ahmadpj
یک شنبه 21 فروردین 1390, 14:03 عصر
من ديتابيس شما رو نديدم، ميشه بگين چرا ميخواين براي كالاها 12 ركورد ايجاد كنين؟ آيا ميخواين گزارش ماهانه داشته باشين؟

به هرحال اگر راه مستقيم و بهتري وجود نداشته باشه براي حل مشكلي كه نوشتين، بهترين راه اينه كه يك حلقه do loop داشته باشين كه روي كالاها دور بزنه و براي هركدوم از اونها، عملياتي كه ميخواين رو انجام بده.

saeed2142
یک شنبه 21 فروردین 1390, 21:19 عصر
با سلام
تشکرازشما
من نمونه را گذاشتم ومنظورم از این کاررا درک کردید فقط اگه ممکنه راهنمایی کنید حلقه باید تودرتو باشه یعنی با دوحلقه do loop اگه نمونه دارید ممنون میشم اشاره کنید یا روی نمونه من تغییرات را ایجادکنید ممنون میشم

ahmadpj
یک شنبه 21 فروردین 1390, 22:59 عصر
آفیس من 2003 بود ولی بالاخره فایل شما رو دیدم

بله منظورم همین بود که فرمودین، حلقه های do loop تو کار با دیتابیس خیلی کمک میکنن، ضمن اینکه اصلا نیازی هم به فرم و انتخاب رکوردها با ماوس نیست و به راحتی میشه سرتاسر جدول رو پیمایش کرد


Dim rst As Recordset, sql As String

sql = " SELECT *from kalalist "


Set rst = dbs.OpenRecordset(sql, dbOpenDynaset)
rst.MoveFirst


Do Until rst.EOF

' هرچی دوست دارین اینجا بنویسین تا برای همه کالاها اجرا بشه

rst.MoveNext
Loop




مثلا



Do Until rst.EOF


For i = 0 To 11
intNum1 = i + 1
STRSQL = " insert into kala (kalCode,kalName, mounth) values (" + cstr(rst.fields("kalCode").value) + ",'" + rst.fields("kalname").value +"',"+ cstr(i)+")"
DoCmd.RunSQL STRSQL
Next i



rst.MoveNext
Loop





- دستور sql برای افزودن رکورد ساده ست فقط باید مراقب فیلدهای کاراکتری باشین

insert into kala (kalCode,kalName, mounth) values (100,'myKala2',3)



اما اگه هدف شما گزارش گیری هست، برای گزارش گیری مجبور نیستیم جدولی رو بسازیم و با رکوردها پر کنیم.. میشه با توانایی های sql و مولدهای گزارش هر گزارشی رو ساخت.