PDA

View Full Version : لطفاً کمی صبر کنید...



Ali_Fallah
چهارشنبه 11 مرداد 1385, 19:05 عصر
حتماً شما عزیزان در برنامه ها ونرم افزارهای مختلف مشاهده کردید که قبل از باز شدن یک فرم یا گزارش در صورتی که مدتی طول بکشه تا اون فرم یا گزارش باز بشه فرم کوچکی (پروگرس بار {اگه درست نوشته باشم}) باز میشه و پیغام لطفاً کمی صبر کنید نمایش داده میشه و تا زمان باز شدن اون فرم یا... مدت زمان را هم نشون میده میخواستم ببینم از دوستان کسی میتونه این کار رو انجام بده...
البته من در یکی دو برنامه دیدم ولی همه آنها MDE بود .
متشکرم

moustafa
چهارشنبه 11 مرداد 1385, 19:14 عصر
اون پروگرس بار تو" استاتوس بار" بدرد نمی خوره
وقتی که لود میشه تا زمانیکه باز میشه مربوط به چه رویدادی میشه اگه بتونیم یه رابط زمانی یا ..بین اونا پیدا کنیم من میتونم یه کاریش بکنم

Ali_Fallah
چهارشنبه 11 مرداد 1385, 19:34 عصر
خیلی ممنون
اگه میتونی یک نمونه کوچیک ارسال کن تا با همفکری بقیه عزیزان شاید به یه جایی رسوندیم...
معمولا بعضی از گزارشها دارای چندین صفحه هستند حتی ممکنه بیش از 100 صغحه باشند که در این صورت قبل از باز شدن ، خود اکسس یک ساعت شنی نشون میده در کنار شمایل موس
اگه بشه در این حالت ...

Ali_Fallah
پنج شنبه 12 مرداد 1385, 18:08 عصر
خوب اقا مصطفی در حال اجرای پروژه هستی یا بی خیالش شدی ؟

moustafa
جمعه 13 مرداد 1385, 17:39 عصر
نه جناب اقای کامرانی اتفاقا من پیش از شما به فکر این کار بودم وهستم حتی از یکی از اشخاص اهل فن خواستم برام روش کار کن که میسر نشد علی ایحال دارم روش کار میکنم
به محض اینکه به جواب برسم یه نمونه میذارم

Ali_Fallah
جمعه 13 مرداد 1385, 20:09 عصر
خیلی ممنون ما منتظریم
در مورد RunTime که شاپرک عزیز مطالبش رو جمع آوری کرد باید بگم که در CD آفیس 2003 پوشه ای بنام FILES هست که در اون بازم پوشه ای بنام ACCRT که در این پوشه یه فایل نصبی بنام ACCESSRT هست اون رو نصب کن البته برای جواب گرفتن بایستی آفیس رو سیستم نصب نباشه یا اینکه موقع نصب آفیس ACCESS نصب نکنی. در این صورت برنامه ای که دراکسس درست کردی بصورت EXE در میاد ونمیتونی تغییری روش اعمال کنی چون اکسس نصب شده نداری. موفق باشی
من تا این اندازه بلد بودم شاید بقیه دوستان مطالب بیشتری بلد باشند

mohammadgij
شنبه 14 مرداد 1385, 14:25 عصر
امیدوارم این بدرد بخوره

Ali_Fallah
شنبه 14 مرداد 1385, 15:19 عصر
متشکرم
ولی من دوست داشتم بصورت یک نوار آبی رنگ پر شدنی باشه ضمناً بعد از تمام شدن زمان نیز یک فرم یا گزارشی باز بشه...

moustafa
شنبه 14 مرداد 1385, 18:00 عصر
این اقای mohammadgij دیر میاد ولی همیشه دست پرمیاد
من هنوزندیدم ولی حتما کارت درست ء
مرسی ممنون

شاپرک
یک شنبه 15 مرداد 1385, 09:56 صبح
http://www.barnamenevis.org/forum/showthread.php?t=50107

سنبله کار
یک شنبه 15 مرداد 1385, 10:15 صبح
برای بدست آوردن زمان مورد نیاز چه راهی پیشنهاد می کنید ؟

انگوران
یک شنبه 15 مرداد 1385, 11:27 صبح
دوستان سلام ـ لطفاً بفرمائید فرم frmwait چطور ساخته شده است .

Ali_Fallah
یک شنبه 15 مرداد 1385, 11:28 صبح
هر گزارشی معمولا با توجه به حجم اطلاعاتش مقداری طول میکشه تا باز بشه به عنوان مثال بالا اومدن ویندوز رو ببینید که در هر سیستم فرق میکنه و اون پروگرس بار یا حالا هرچی بطور خودکار تشخیص میده و بعد از یک زمان مشخصی (با توجه به سرعت سیستم ) بالا میاد و...
ما نمیتونیم برایش زمان تعیین کنیم مثلا بگیم 10 ثانیه شاید 1 دقیقه طول بکشه...

سنبله کار
یک شنبه 15 مرداد 1385, 11:32 صبح
هر گزارشی معمولا با توجه به حجم اطلاعاتش مقداری طول میکشه تا باز بشه به عنوان مثال بالا اومدن ویندوز رو ببینید که در هر سیستم فرق میکنه و اون پروگرس بار یا حالا هرچی بطور خودکار تشخیص میده و بعد از یک زمان مشخصی (با توجه به سرعت سیستم ) بالا میاد و...
ما نمیتونیم برایش زمان تعیین کنیم مثلا بگیم 10 ثانیه شاید 1 دقیقه طول بکشه...
پس باید حدسی کار کنیم و time بدیم
خوب در این صورت هر کامپیوتر بنا به شرایط سخت افزاری و یا نرم افزاری می تونه زمان متفاوتی بگیره .
در نتیجه progress bar فقط برای نمایشه و زیباییه کاره و اینکه کاربر رو به انتظار تشویق کنه .


دوستان سلام ـ لطفاً بفرمائید فرم frmwait چطور ساخته شده است .
منظورتون رو بیشتر توضیح میدین ؟

شاپرک
یک شنبه 15 مرداد 1385, 12:21 عصر
پس باید حدسی کار کنیم و time بدیم
خوب در این صورت هر کامپیوتر بنا به شرایط سخت افزاری و یا نرم افزاری می تونه زمان متفاوتی بگیره .
در نتیجه progress bar فقط برای نمایشه و زیباییه کاره و اینکه کاربر رو به انتظار تشویق کنه .



یعنی منظورتون اینه که درصد پیشرفت رو درست نشون نمیده ؟
نه اینطور نیست من امتحان کردم ... بستگی به این داره که معیار Update اش چی باشه .

سنبله کار
یک شنبه 15 مرداد 1385, 12:32 عصر
لطفا یک مثال بزنید

شاپرک
یک شنبه 15 مرداد 1385, 13:51 عصر
البته من نمیگم 100 درصد درست و دقیق نشون میده ولی به طور تقریبی درسته و بسگی به معیار Update داره .
مثلا من خودم چون توی یک حلقه از ابتدا تا انتهای رکوردست یه محاسباتی انجام میدادم معیار رو Bookmark مربوط به رکوردست در نظر گرفتم .

سنبله کار
یک شنبه 15 مرداد 1385, 14:07 عصر
درسته در برخی موارد می شه از این راه استفاده کرد .
ممنون

Ali_Fallah
دوشنبه 16 مرداد 1385, 12:41 عصر
خب بلاخره چی شد...

moustafa
سه شنبه 17 مرداد 1385, 12:31 عصر
برای بعضی کارها مثل انتقال به دیسکت با توجه به ظرفیت دیسکت می توان درصد پیشرفت را تعیین وبا توجه به ان به مقدار پروگروس بار اضافه کرد (با دستور" سلکت کیس " .....)
اما در مورد لود شدن فرم خود استاتوس بار اکسس پیشرفت کار رو نشون میده اگه بشه بین اون و پیغام ارتباط برقرار کرد ........
دستور یا رویدادی برای استاتوس بار اکسس وجود نداره که فراخوانی بشه ؟

sarami
چهارشنبه 18 مرداد 1385, 02:03 صبح
شما نیازی نیست زمان رو اندازه گیری کنین فقط کافیه در موقع باز شدن اون فرم رو صدا بزنین و موقع active شدن ببندینش مانند نمونه ذیل

شاپرک
چهارشنبه 18 مرداد 1385, 07:33 صبح
جالب بود اما آقای صارمی بد نیست کاربر درصد پیشرفت رو هم بدونه ....
http://www.barnamenevis.org/forum/showthread.php?t=50107

سنبله کار
چهارشنبه 18 مرداد 1385, 08:02 صبح
برای بعضی کارها مثل انتقال به دیسکت با توجه به ظرفیت دیسکت می توان درصد پیشرفت را تعیین وبا توجه به ان به مقدار پروگروس بار اضافه کرد (با دستور" سلکت کیس " .....)
اما در مورد لود شدن فرم خود استاتوس بار اکسس پیشرفت کار رو نشون میده اگه بشه بین اون و پیغام ارتباط برقرار کرد ........
دستور یا رویدادی برای استاتوس بار اکسس وجود نداره که فراخوانی بشه ؟
مطلب خوبیه به نظرمن هم بهتره روی این پیشنهاد کار بشه .

mohammadgij
چهارشنبه 18 مرداد 1385, 14:32 عصر
اینم ببینید شاید به درد بخوره همون Progres که می خواستین. باید مراحل انجام رو به چند دسته تقسیم کنید

سنبله کار
چهارشنبه 18 مرداد 1385, 15:35 عصر
من متوجه نشدم
اگر مسئله بر سر تقسیم زمان باشه که فکر می کنم حل شده .
مثلا در کد زیر شما می تونید با تعیین مقدار count و sleep روند پیشرفت را تند یا کند کنید.

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
------------------------------------
Private Sub Command0_Click()
Dim count, Progress_Amount
count = 20
RetVal = SysCmd(acSysCmdInitMeter, "در حال انجام محاسبه...", count)
For Progress_Amount = 1 To count
Sleep (100)
RetVal = SysCmd(acSysCmdUpdateMeter,Progress_Amount)
Next
RetVal = SysCmd(acSysCmdRemoveMeter)

End Sub
اما پیش بینی زمان مورد نیاز در یک عمل و ایجاد نسبت مناسب در روند پیشرفت برنامه مبنای تنظیم این متغیرهاست و مستقلا معنی خاصی ندارد .

mohammadgij
چهارشنبه 18 مرداد 1385, 16:42 عصر
نه من منظورم تنها تقسیم زمان نبود. بحث ابتدایی این بود که یه پروگرس داشته باشیم مثل باقی برنامه ها که یه خط آبی رنگ پر میشه.
منم این فایل رو واسه همین گذاشتم

سنبله کار
چهارشنبه 18 مرداد 1385, 16:46 عصر
ببخشید که من فکر کردم در ادامه بحث این نمونه را گذاشتید .:خجالت:
کاش اشاره می کردید .

sarami
چهارشنبه 18 مرداد 1385, 17:18 عصر
شما یک progressBAR بار به این فرم اضافه کنید و در in open فرم مقدار max اون progressbar رو به تعداد RECORDCOUNT اون قرار بدین و در رویداد ONFORMATگزارشتون با هر رکورد یک واحد به VALUE اون PROGRESSBAR اضافه کنین چون با بارگذاری هر رکورد کسر N=N+1/RECORDCOUNTمقدار PROGRESSBAR خواهد بود درنتیجه زمان دقیق اتمام PROGRESSBAR و نمایش نهایی گزارش رو خواهید داشت.

سنبله کار
چهارشنبه 18 مرداد 1385, 17:23 عصر
ممنون
همونطور که خانم شاپرک هم اشاره کردند در فرمها و گزارشها می توان از این روش برای لود استفاده کرد اما برای کارهای دیگر مثل : اجرای stored pro... یا کپی اطلاعات روی دیسکت و غیره چه روشی رو پیشنهاد می کنید ؟

sarami
چهارشنبه 18 مرداد 1385, 17:34 عصر
خود ویندوز هم برای نمایش کپی شدن اطلاعات با اعداد و مقدارهای تغریبی این کار رو میکنه برا نمونه یه فولدر شلوغ رو برای کپی کردن انتخاب کنین که حجم قابل قبولی هم داشته باشه در این صورت مشا هده میشه که زمانی که ویندوز اعلام میکنه در بسیاری از موارد تصییح میشه.مهمترین مشکل برای این کار چون منم با این مشکل مواجه بودم اختصاص دادن مقداری از قدرت PROCESSقسمت CPU به یک تایمره اگه دقت کرده باشین در هنگام اجرای SP بقیه کد های شما که در خط های بعدی نوشته میشن منتظر پاسخ SP میمونن.من دنبال یه تابع API اینچنینی می گردم به محض اینکه به نتیجه ای برسم سایر دوستان رو در جریان خواهم گذاشت

mohammadgij
پنج شنبه 19 مرداد 1385, 12:39 عصر
آقای صارمی واقعا دوست دارم کارت درسته. این یکی از مشکلاتیه که فکر کنم خیلی از دوستان باش دست و پنجه نرم می کنن. که امیدوارم زودتر حل بشه اما راهی که شما هم گفتین خیلی خوبه ولی اگه اون تابع َAPI پیدا شه .....................

Ali_Fallah
پنج شنبه 19 مرداد 1385, 23:20 عصر
این برنامه ProgressBar رو ببینید بقیه رو هم شما دوستان خصوصاً جنای آقای صارمی
لطف کنند واصلاحش کنن
البته یه خطایی داره ...
ممنون

sarami
جمعه 20 مرداد 1385, 01:55 صبح
منظورتون رو از این progressbar متوجه نمی شم . اگه منظورتون ارور اونه باید بگم چون مقدار value اون از max اون بیشتر میشه این ارور رو میده .

Ali_Fallah
جمعه 20 مرداد 1385, 09:18 صبح
با تشکر از آقای صارمی
عرض کنم برنامه ای که جنابعالی ضمیمه کردید خیلی از عزیزان تمایل داشتند که قبل از باز شدن فرم یا گزارش ، فرم مخصوص حالت انتظار بصورت یک نوارپر شدنی یا همانی که مشاهده کردید باشه...

morteza_lll
یک شنبه 18 شهریور 1386, 12:14 عصر
این برنامه ProgressBar رو ببینید بقیه رو هم شما دوستان خصوصاً جنای آقای صارمی
لطف کنند واصلاحش کنن
البته یه خطایی داره ...
ممنون


سلام دوستان
اگر کسی می تونه این برنامه دوست خوبمونو طوری اصلاح کنید
که هوشمند شود یعنی به محض پایان تکمیل شدن ( باز شدن یک فرم ) این ProgressBar نیز کار خود را تمام کرده و اون فرمو نمایش دهد
ممنون

morteza_lll
یک شنبه 18 شهریور 1386, 21:38 عصر
سلام مجدد
کسی نمی تونه کمکم کنه