PDA

View Full Version : لینک Query به ProgressBar



MiRHaDi
شنبه 07 شهریور 1383, 20:46 عصر
سلام
ببخشید که دوباره مزاحم شدم . موضوع قبلیم قفل شده و با عرض ببخشید دوباره نوشتم.
من مطلب آقای Inprise رو مطالعه نمودم ! ولی مساله اینجاست که میشه ! فقط نمیدونم چطوری !
ببینید ایشون فرمودند که چون Query نمیدونه که چند تا جواب بر میگرده نمیتونه بفهمه الان مثلا چند درصد جوابها دراومده ! خوب ! این که اظهر المن الشمس هست ! ببینید من نمیخوام Progress Bar بگه که چند درصد جوابها اومده ! ممکنه فقط 1 جواب داشته باشیم و یا حتی هیچ جوابی ! میخوام ببینم در چه مرحله از کار گزارش گیری هستم !
مثلا شما 1000 نفر آدم داری ! میخوای اونایی که پاسپورت دارند رو جدا کنی ! ممکنه 2 نفر پاسپورت داشته باشند ! ولی وقتی به نفر 800 رسیدی میگی 80٪ افراد رو چک کردم حتی اگه هیچی پیدا نکرده باشی ! وقتی به 990 برسی میگی 99٪ افراد چک شده ! کاری ندارم چند تا جواب داده !
میخوام ببینم چقدر از کار انجام شده.
برای اینکه مشاهده بکنیم که میشه این کار رو کرد ! یک Table نسبتا بزرگ در Access بسازید و بعد از آن Query بگیرید . در قسمت Status Bar یک Progress Bar به نام Run Query ظاهر شده و روند کار را نشانتان میدهد
من دقیقا همین را میخواهم . برای برنامه ام لازم دارم
با تشکر از شما
لطفا موضوع را قفل نفرماپید که اگر کسی بلد است جواب دهد
پیشاپیش مرسی

Mohammad S
شنبه 07 شهریور 1383, 23:50 عصر
شاید به این طریق بتوانی (البته به موضوع مورد نظر شما بستگی دارد)
ProgressBar خاصیتی داره به نام Max که ماکزیمم طول آن را مشخص می کند همچنین خاصیت دیگری دارد به نام Position که محل فعلی ProgressBar‌را مشخص می کند. شما می توانید ماکزیمم طول ProgressBar‌را برابر با تعداد رکوردها و یا درصدی از آن بگرید.
هنگام جستجو هم قطعا شما توسط دستوری به رکورد بعدی منتقل می شوید مثل Tabel1.Next . در این حالت می توانید چک کنید که اگر تعداد خاصی رد شده (شمارنده حلقه به عدد خاصی رسید) مقدار Position‌را افزایش دهید. (درصدها را در نظر داشته باشید)

امیدوارم به دردتان بخورد
موفق باشید :)

MiRHaDi
یک شنبه 08 شهریور 1383, 00:52 صبح
سلام
نه عزیزم !
این کار رو وقتی میتونی بکنی که خودت دستی توی Table حرکت کنی ! با دستوری مثل Next,Prior,First,Last,Locate,Goto,.... ولی با Query وقتی شما ExecSql یا Open میکنی دیگه تا وقتی پردازش نشه کد خط بعدیت اجرا نمیشه !
بای

Mohammad S
یک شنبه 08 شهریور 1383, 00:57 صبح
خوب نمی تونی توی دستورات SQL، دستوری قرار بدی که مثلا یکی به شمارنده اضافه کنه؟ یه چیزی تو مایه های برنامه نویسی با SQL که باید تو بخش خودش بپرسی.
والا شرمنده :?

رضا عربلو
یک شنبه 08 شهریور 1383, 01:41 صبح
بهترین راه اینکه در رویداد BeforeOpen کوری شکل ماوس را عوض کنی و در رویداد AfterOpen aشکل ماوس را به حالت اولیه لش بازگردتنی.
من همیشه این کار را می کنم
در ضمن سوال شما را من هم قبلآض پرسیده ام و دو جواب دارد؟ 1 - یا کسی بلد نیست. 2- یا مسئله جوابی ندارد.
البته می توان با یک Thread مقدار ProgressBar را هی افزایسش دهی به شرت انکه با الگوریتمی مقدار تقریبی زما جستجوی n را بدانی

MiRHaDi
جمعه 13 شهریور 1383, 05:23 صبح
سلام
من ProgressBar میخوام ! کرسر ماوس که نشون نمیده چقدر کار برنامه انجام شده :)
قربانت
بای

موسوی
چهارشنبه 25 شهریور 1383, 20:58 عصر
تو رو خدا یکی یه جواب درست وحسابی بده چون من هم همین مشکل رو دارم

Ali - N
چهارشنبه 25 شهریور 1383, 22:40 عصر
شما Progress bar شبیه به گزارشات برنامه حسابرس می خواین؟؟؟

MiRHaDi
سه شنبه 07 مهر 1383, 08:59 صبح
سلام
ندیدمش !
شبیه Access هنگام Running Query
بای

phantasm
سه شنبه 07 مهر 1383, 16:24 عصر
Query تون رو تیکه تیکه کنید و وقتی هر تکه انجام شد یه مرحله انجام شده و وقتی آخرین step انجام شد خلاص......پیاده سازیش دیگه با خودت (:D)
هر چی تیکه ها کوچیکتر باشن حرکت Progress bar نرمتره.




Cheers :wink:

MiRHaDi
سه شنبه 07 مهر 1383, 18:24 عصر
سلام
مثلا اینو برای من تیکه میکنید ؟

select * from
Assarch right outer join assist
ممنون میشم
بای

phantasm
سه شنبه 07 مهر 1383, 19:12 عصر
پیاده سازیش دیگه با خودت

MiRHaDi
چهارشنبه 08 مهر 1383, 01:59 صبح
سلام
من این مثال رو زدم !‌ چون جوابت یجورایی عجیب قریب بود ! یعنی زیادی دیگه منطق برنامه نویسیه قوی ای داشت گفتم شاید من بلد نیستم !
میخواستم خودم موتورش رو بنویسم که دیگه از SQL استفاده نمیکردم مهندس :)
قربانت

phantasm
پنج شنبه 09 مهر 1383, 08:14 صبح
مثلا شما 1000 نفر آدم داری ! میخوای اونایی که پاسپورت دارند رو جدا کنی ! ممکنه 2 نفر پاسپورت داشته باشند ! ولی وقتی به نفر 800 رسیدی میگی 80٪ افراد رو چک کردم حتی اگه هیچی پیدا نکرده باشی ! وقتی به 990 برسی میگی 99٪ افراد چک شده ! کاری ندارم چند تا جواب داده !


select * from
Assarch right outer join assist

مثال اولت بیشتر حول و حوش جستجو میگشت و مثال دوم خیلی متفاوته ٬ معلوم نیست دنبال جواب میگردی یا ........
بهرحال قضیه access فرق میکنه ٬ چون یه dbms ی و به منابع مورد نیازش دسترسی داره .متاسفانه من برای تمام کوئریهای که میشه زد جواب جهانشمولی ندارم .


میخواستم خودم موتورش رو بنویسم که دیگه از SQL استفاده نمیکردم مهندس
چه ربطی داشت؟ :roll:

phantasm
پنج شنبه 09 مهر 1383, 15:17 عصر
خوبه خودت هم میدونی:

ولی با Query وقتی شما ExecSql یا Open میکنی دیگه تا وقتی پردازش نشه کد خط بعدیت اجرا نمیشه !

while step<>end do begin

try
.
query with limitaton
.
finally
.
step++
change limitation
.
end;

:)