PDA

View Full Version : حرفه ای: ایجادنواروضعیت پیشرفت



saeed2142
سه شنبه 04 آبان 1389, 20:37 عصر
عملیات محاسبه من درفرم به جهت تعدادبالای رکوردهای دیتابیس طولانی وزمان حدوداتا4دقیقه طول میشکه لذا من بجای انتظاربه پایان عملیات با msgboxکه عملیات محاسبه برای کاربر نامفهوم کرده :عصبانی++:یک نواروضعیت انتظار وپیشرفت می خوام مثل عملیات کپی کردن ویتدوز که زمان انتظار را نشان میدهه کاربر زمان انتظاررامشاهده کنه
باتشکر

ali190
سه شنبه 04 آبان 1389, 21:22 عصر
سلام
چرا از پروسزبار استفاده نمیکنی؟

saeed2142
سه شنبه 04 آبان 1389, 21:37 عصر
میشه بیشترتوضیح بدین که منظورتان از پروسزبارچیست چون نمی دونم البته دنبال کامپونت گشتم پیدانکردم

ali190
سه شنبه 04 آبان 1389, 21:51 عصر
سلام
بیا برادر ، فایل نمونه رو نگاه کن

saeed2142
سه شنبه 04 آبان 1389, 21:53 عصر
فهمیدم یک خصوصیت هست میشه نحوه کدنویسی را توضیح بدین که چگونه همزمان با اجرای فرمان عملیات اصلی این خصوصیت هم فعال بشه مننون میشم

saeed2142
سه شنبه 04 آبان 1389, 21:54 عصر
فایل تون را رسید مرسی سوالی داشتم می پرسم

saeed2142
سه شنبه 04 آبان 1389, 23:11 عصر
علی جان تشکرازت بخاطر این راهنمایی ولی من چون وقت کمی دارم ازت کمک می خوام باتوجه به نمونه ای که برات توسایت میگذ ارم کمکم کنی زمانی که کماند رابرای محاسبه می زنم این فرم ظاهرشه یعنی حضور این فرم از نظر زمانی به زمان محاسبه فرم بستگی داشته باشه نمونه شما عالی بود ولی برای بکارگری دربرنامه خودم کمی زمان می بره که من مشکل زمان دارم باتشکر نمونه تقدیم شما

ali190
چهارشنبه 05 آبان 1389, 12:49 عصر
سلام
خواهش میکنم ، شما لطف داری
دقیقاً منظورت رو نگرفتم
اگر امکانش هست بیشتر توضیح بده
من الان رو این نمونه پروژه ای که شما قرار دادی دقیقاً باید چیکار کنم؟
یاعلی

saeed2142
چهارشنبه 05 آبان 1389, 13:48 عصر
باعرض سلام به شما علی جان
خدمت شما عرض می کنم که که tableاصلی من الان بیشتراز20000رکورد داره وزمانی که من درفرم WORKEDAYجهت انجام محاسبات بااجرای فرمان Command33 بیشتراز5دقیقه باید انتظاربکشم که MsgBoxپیغام اتمام کاررابده حالا من می خوام هنگام اجرای محاسبات توسط command33همزمان نوارانتظارظاهرشده وبه این صورت پیشرفت کاررابه کاربر اعلام کنه درform1برنامه ارسالی شما تایمرانتظاربا بازگشایی برنامه ظاهرمیشه ومن نمی دوم دربرنامه خودم چکونه form1رااحضارکنم آیا درخودکدنویسی command33درداخل حلقه قراردهم یا درتایمرفرم اصلی و....چندمعمای دیگرحال باتوجه به توضیحات نظروپیشنهادشمابرام راهگشا است ممنون از توجه تون

ali190
پنج شنبه 06 آبان 1389, 16:43 عصر
سلام

علی جان تشکرازت بخاطر این راهنمایی ولی من چون وقت کمی دارم ازت کمک می خوام باتوجه به نمونه ای که برات توسایت میگذ ارم کمکم کنی زمانی که کماند رابرای محاسبه می زنم این فرم ظاهرشه یعنی حضور این فرم از نظر زمانی به زمان محاسبه فرم بستگی داشته باشه نمونه شما عالی بود ولی برای بکارگری دربرنامه خودم کمی زمان می بره که من مشکل زمان دارم باتشکر نمونه تقدیم شما
خوهشاً نمونه رو با فرمت 2003 آپ کن
ممنون
یاعلی

saeed2142
پنج شنبه 06 آبان 1389, 17:13 عصر
تا10دقیقه دیکه آماده می کنم چون نمونه قبلی را ندارم ممنون ازتوجه شما

saeed2142
پنج شنبه 06 آبان 1389, 17:39 عصر
فایل را بافرمت 2003آماده کردم تقدیم به شما اگه سوائلی باشه درخدمتم باتشکر

ali190
پنج شنبه 06 آبان 1389, 17:54 عصر
سلام
فایل رو دریافت کردم
خواهشاً دقیقاً توضیح بدید که چی میخواهید
منظورم از دقیق یعنی توضیح خواستتون بر روی نمونه قرار داده شده است
یاعلی

saeed2142
پنج شنبه 06 آبان 1389, 18:12 عصر
اول خسته نباشی وخداقون خدمت شما عرض کنم که وقتی فرم workday1را بازمی کنم یک دکمه فرمان با عنوان "به روزرسانی کلیه رکوردهاي پرسنل توليد"هست که عمل محاسبه را جدول مربوطه که personeltolid است را انجام میده حال انکه اکنون که رکورد من بالای 19000رکورد رسیده کاربروقتی فرمان را اجراءمیکنه مدت 4الی 5دقیقه طول میشکه وتوی این مدت هیچ اطلاعی از اجرای کار یا پیشرفت محاسبات توسط کد نویسی کامند33نداره وتااینکه پیغام masboxانتهای اعلام میکنه کار خاتمه یافته وعملا کار رادوچار مشکل کرده حال من میخوام از طریف یک نوارپیشرفت اطلاعات داشته باشم که در هرلحظه چقدار از کار پیشرفت کرده وچقدار از زمان پایان کار کانده

saeed2142
پنج شنبه 06 آبان 1389, 18:14 عصر
مانند عمل کپی کردن درویندوز والبته بانمونه شمامن به هدفم نزدیک شده اما نمی دونم که این فرم را چگونه هنگام محاسبه احضار کنم

saeed2142
پنج شنبه 06 آبان 1389, 18:15 عصر
ببخشید اگه به خاطر سرعتم غلط املای دارم

saeed2142
پنج شنبه 06 آبان 1389, 18:16 عصر
اگه سوائل دیگه ایی هست درخدمتم
یاعلی

ali190
پنج شنبه 06 آبان 1389, 18:31 عصر
سلام
منظورتون رو متوجه شدم
برای نمایش یک پروسزبار شما به یک بازه نیاز دارید
ابتدا و انتها
در مورد انجام عملیات بر روی رکورد ها کار یک مقدار مشکل هست
مسئله اینجاست که ما بطور پیش فرض زمان انجام عملیات بر روی هر رکورد رو چقدر تعیین کنیم ، تا این زمان رو بعد به تعداد کل اونها تعمیم بدیم؟

saeed2142
پنج شنبه 06 آبان 1389, 18:42 عصر
زمان معمولا به تعدادرکوردبستگی داره وقبل پیش بینی دقیق نیست مثلا درنمونه فوق زیر 1دقیقه وبااطلاعات واقعی حدود 5دقیقه

saeed2142
پنج شنبه 06 آبان 1389, 18:46 عصر
در کد فوق عملیات داخل یک حلقه forقرارداره آیا میشه فرم نوار پیشرفت را از طریق همین حلقه احضار کردودرانتهای حلقه همزمان باmsxboxفرم پیشرفت نیزبسته شود درضمن زمان محاسبه برروی یک رکورد هم متفاوت هست زمانی که یک محاسبه ساده جمع باشد زمان محاسبه کمه ولی زمانی که از تابع dsumویا dcountوسایر توابع جستجو محاسبه یک رکورد بسته به تعدادموارد جستجو درجدول مقصدداره که قابل پیش بینی نیست

saeed2142
پنج شنبه 06 آبان 1389, 18:58 عصر
حالا اگه زمان را دقیق تخمین نزنیمن چه اتفاقی میفته واگه ممکنه توی نمونه موجود یک جوری یا شما زحمت بکشین کدنویسی کننین با همان زمان لازم رکورد موجود تا من بعدااین زمان را تخمیین بزنم ویا اینکه راهنمایی کنید که من چگونه کد نویسی کنم باتکشر فروان

ali190
پنج شنبه 06 آبان 1389, 19:02 عصر
سلام
چند وقت پیش خودم در زمینه محاسبه زمان لازم برای انجام عملیات بر روی دسته ای از رکوردها به مکشل خورده بودم
سئوالم رو هم مطرح کردم
ولی به جایی نرسیدم

ali190
پنج شنبه 06 آبان 1389, 19:04 عصر
حالا اگه زمان را دقیق تخمین نزنیمن چه اتفاقی میفته واگه ممکنه توی نمونه موجود یک جوری یا شما زحمت بکشین کدنویسی کننین با همان زمان لازم رکورد موجود تا من بعدااین زمان را تخمیین بزنم ویا اینکه راهنمایی کنید که من چگونه کد نویسی کنم باتکشر فروان

من اگر زمان دقیق رو ندونم پروسزبارم رو کی به انتها برسونم؟

saeed2142
پنج شنبه 06 آبان 1389, 19:11 عصر
زمان پروسزباررا کجاتنظیم میکنند آیا داخل event تامیر فرم هست یا باحلقه تنظیم میشه t
timer intervalزمان پروسزباربه اون بسته هست یعنی شما زمان شروع را اونجا تنظیم می کنید

ali190
پنج شنبه 06 آبان 1389, 19:13 عصر
تو حلقه ست میشه

saeed2142
پنج شنبه 06 آبان 1389, 19:23 عصر
آیا تواین حلقه ست میشه
Me.ProgressBar2.Value = 0
Me.ProgressBar2.Max = 1000
For i = 0 To 1000
Me.ProgressBar2.Value = i
Next
End Sub

ali190
پنج شنبه 06 آبان 1389, 19:26 عصر
دقیقاً
در اینجا max=1000 هست
اون 1000 متغیر هست

saeed2142
پنج شنبه 06 آبان 1389, 19:34 عصر
خوبه حالا نمیشه تعداداین متغییررا ست کرد به حلقه for محاسبه Command33 به نحوی که به تعدادرکوردمحاسبه شده فرم اصلی نوارپیشرفت حرکت کنه یعنی به حلقه For i = 1 To X
strFilter = "ID = " & rst.Fields("ID") متصل شه

saeed2142
پنج شنبه 06 آبان 1389, 19:56 عصر
آِیا راهی هست که زمانی که Command33 فرمworkday1شروع شده form1که پروسزباردراون هست شروع به کارکنه وmaxیا حلقه for اون آدرس دهی بشه به حلقه for فرم Command33 ویا پروسزبار درون حلقه Command33 قرارگیره

ali190
پنج شنبه 06 آبان 1389, 20:13 عصر
سلام
این نمونه رو ببین!

ali190
پنج شنبه 06 آبان 1389, 20:22 عصر
این نمونه رو هم ببینید!

saeed2142
پنج شنبه 06 آبان 1389, 20:37 عصر
علی جان تنها کاری که می تونم بکنم تشکرو فاتحه برای امواتت تواین شب جمعه است واقعا یک قدم بزرگ برای من وهمه دوستانی که ازاین پس نیاز به این پیدامیکنند انجام دادی انشاءالله ماهم بتونیم قدم خیر برداریم باتشکر

saeed2142
پنج شنبه 06 آبان 1389, 20:59 عصر
علی نمونه اول که form1را فراخونی میکنه هنگ میکنه وفرم بسته نمیشه احتما لا به خاطر تایمر فرم 1هست که روی 20000زمان گرفته