# پایگاه‌های داده > سایر پایگاه‌های داده > Access >  لطفاً کمی صبر کنید...

## Ali_Fallah

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

----------


## moustafa

اون پروگرس بار  تو" استاتوس بار" بدرد نمی خوره 
وقتی که لود میشه تا زمانیکه باز میشه مربوط به چه رویدادی میشه اگه بتونیم یه رابط زمانی  یا ..بین اونا پیدا کنیم من میتونم یه کاریش بکنم

----------


## Ali_Fallah

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

----------


## Ali_Fallah

خوب اقا مصطفی در حال اجرای پروژه هستی یا بی خیالش شدی ؟

----------


## moustafa

نه جناب اقای کامرانی اتفاقا من پیش از شما به فکر این کار بودم وهستم حتی از یکی از  اشخاص اهل فن خواستم برام روش کار کن که میسر نشد علی ایحال دارم روش  کار میکنم 
به محض اینکه به جواب برسم یه نمونه میذارم

----------


## Ali_Fallah

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

----------


## mohammadgij

امیدوارم این بدرد بخوره

----------


## Ali_Fallah

متشکرم
ولی من دوست داشتم بصورت یک نوار آبی رنگ پر شدنی باشه ضمناً بعد از تمام شدن زمان نیز یک فرم یا گزارشی باز بشه...

----------


## moustafa

این اقای  mohammadgij دیر میاد ولی همیشه دست پرمیاد  
من هنوزندیدم ولی حتما کارت درست ء 
مرسی ممنون

----------


## شاپرک

http://www.barnamenevis.org/sh...ad.php?t=50107

----------


## سنبله کار

برای بدست آوردن زمان مورد نیاز چه راهی پیشنهاد می کنید ؟

----------


## انگوران

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

----------


## Ali_Fallah

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

----------


## سنبله کار

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


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




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


منظورتون رو بیشتر توضیح میدین ؟

----------


## شاپرک

> پس باید حدسی کار کنیم و time بدیم
> خوب در این صورت هر کامپیوتر بنا به شرایط سخت افزاری و یا نرم افزاری می تونه زمان متفاوتی بگیره .
> در نتیجه progress bar فقط برای نمایشه و زیباییه کاره و اینکه کاربر رو به انتظار تشویق کنه .


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

----------


## سنبله کار

لطفا یک مثال بزنید

----------


## شاپرک

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

----------


## سنبله کار

درسته در برخی موارد می شه از این راه استفاده کرد .
ممنون

----------


## Ali_Fallah

خب بلاخره چی شد...

----------


## moustafa

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

----------


## sarami

شما نیازی نیست زمان رو اندازه گیری کنین فقط کافیه در موقع باز شدن اون فرم رو صدا بزنین و موقع active شدن ببندینش مانند نمونه ذیل

----------


## شاپرک

جالب بود اما آقای صارمی بد نیست کاربر درصد پیشرفت  رو هم بدونه ....
http://www.barnamenevis.org/sh...ad.php?t=50107

----------


## سنبله کار

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


مطلب خوبیه به نظرمن هم بهتره روی این پیشنهاد کار بشه .

----------


## mohammadgij

اینم ببینید شاید به درد بخوره همون Progres که می خواستین. باید مراحل انجام رو به چند دسته تقسیم کنید

----------


## سنبله کار

من متوجه نشدم
اگر مسئله بر سر تقسیم زمان باشه که فکر می کنم حل شده .
مثلا در کد زیر شما می تونید با تعیین مقدار 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

نه من منظورم تنها تقسیم زمان نبود. بحث ابتدایی این بود که یه پروگرس داشته باشیم مثل باقی برنامه ها که یه خط آبی رنگ پر میشه.
منم این فایل رو واسه همین گذاشتم

----------


## سنبله کار

ببخشید که من فکر کردم در ادامه بحث این نمونه را گذاشتید . :خجالت: 
کاش اشاره می کردید .

----------


## sarami

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

----------


## سنبله کار

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

----------


## sarami

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

----------


## mohammadgij

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

----------


## Ali_Fallah

این برنامه ProgressBar رو ببینید بقیه رو هم شما دوستان خصوصاً جنای آقای صارمی
لطف کنند واصلاحش کنن
البته یه خطایی داره ...
ممنون

----------


## sarami

منظورتون رو از این progressbar متوجه نمی شم . اگه منظورتون ارور اونه باید بگم چون مقدار value اون از max اون بیشتر میشه این ارور رو میده .

----------


## Ali_Fallah

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

----------


## morteza_lll

> این برنامه ProgressBar رو ببینید بقیه رو هم شما دوستان خصوصاً جنای آقای صارمی
> لطف کنند واصلاحش کنن
> البته یه خطایی داره ...
> ممنون


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

----------


## morteza_lll

سلام مجدد 
کسی نمی تونه کمکم کنه

----------

