با سلام خدمت دوستان
من یه datagrid رو فرم گذاشتم و اونو به یه دیتابیس access وصل کردم وقتی یه اسمو تو اون جستجو میکنم یه مدت طول میکشه
میخواستم ببینم راهی هست تا زمان مورد نیاز رو استخراج کنیم و به یه پروگرس بار بدیم تا کاربر بدونه برنامه در حال کاره و جواب رو کی میده ؟
سرعت جستجو رو چطوری بالا ببریم ؟
ممنون از لطف تون
استفاده از پروگرس بار در datagrid
مدیران انجمن: abbas.m.k, athlon64x2, شوراي نظارت

- پست: 246
- تاریخ عضویت: یکشنبه ۹ فروردین ۱۳۸۸, ۹:۱۱ ق.ظ
- سپاسهای ارسالی: 780 بار
- سپاسهای دریافتی: 791 بار
- تماس:
Re: استفاده از پروگرس بار در datagrid
همونطور که میدونید برنامه ی شما و DBMS دارن به صورت دو thread مجزا و جدا از هم اجرا میشن. در نتیجه این امکان که مثلا برا ایجاد یک progress bar شما میزان پیشرفت زمانی پاسخ DB به queryتون رو بخواید بدونید یک سرویسی هست که باید از طریق DBMS به شما ارائه بشه که بسیاری از اونها (از جمله access, sql server و...) این امکان رو در اختیار شما نمیگذارن. پس شما به شکل تر و تمیز نمیتونید این کار رو بکنید و ابزاری برای این کار در اختیارتون قرار نگرفته. اگر بخواید این کار رو حتما انجام بدید باید از یه طریق دیگه ای وارد بشید. مثلا چیزی که الان به ذهن من رسید اینکه با استفاده از یک query جداگانه affected row count رو از دیتا بیس بگیرید، بعد خودتون cursor دیتا بیس رو به دست بگیرید و مثلا هر سری یک درصد مشخصی از داده ها رو به برنامه تون برگردونید(همش با استفاده از امکانات DBMS و ایجاد Stored Procedureها) که از این طریق progress barتون درست کار کنه. همونطور که حتما به نظر خودتون هم رسیده اینکار باعث میشه که کدتون زیاد، کثیف و برنامه تون کند شه. در نتیجه من پیشنهاد میکنم که برای نشان دادن فعال بودن برنامه به کاربر در حین اجرای queryهای سنگین از marquee progress bar استفاده کنید(مانند همون که موقع سرچ در ویندوز نشان داده میشه و مرتب میاد و میره...). فقط توجه کنید که برای اینکه صفحه ی UIتون بلاک نشه (در طول مدت انجام query) و progress bar رو نشان بده باید دسترسی به دیتا بیس رو در thread جداگانه ای راه اندازی کنید.
موفق باشید...
موفق باشید...


- پست: 254
- تاریخ عضویت: یکشنبه ۱۸ مرداد ۱۳۸۸, ۱۰:۱۲ ب.ظ
- سپاسهای ارسالی: 148 بار
- سپاسهای دریافتی: 389 بار
Re: استفاده از پروگرس بار در datagrid
ممنون Captain II
اما شما خیلی سطح بالا نوشتی اگه میشه یه خورده ساده و با یه مثال عملی توضیح بدی خیلی ممنون میشم
اما شما خیلی سطح بالا نوشتی اگه میشه یه خورده ساده و با یه مثال عملی توضیح بدی خیلی ممنون میشم

زندگی همش زنگ تفریح نیست
ساعت بعد حساب داریم ...
[External Link Removed for Guests]
ساعت بعد حساب داریم ...
[External Link Removed for Guests]

- پست: 246
- تاریخ عضویت: یکشنبه ۹ فروردین ۱۳۸۸, ۹:۱۱ ق.ظ
- سپاسهای ارسالی: 780 بار
- سپاسهای دریافتی: 791 بار
- تماس:
Re: استفاده از پروگرس بار در datagrid
خلاصه ترین حالت ممکن اینه که اون کاری که شما میخواستین انجام بدین برای شما امکانش وجود نداره. در صورت نیاز میتونید از حالت marqueeی پروگرس بار برای نشان دادن در حال فعالیت بودن برنامه استفاده کنید. به توضیحات راجع به threading هم در هنگام کد زدن توجه کنید.