PDA

View Full Version : سوال: گذاشتن پروگرس بار براي دريافت اطلاعات از بانك



javadt
شنبه 11 اردیبهشت 1389, 20:39 عصر
سلام
اول از همه نمي دونستم بايد تو كدوم قسمت فرعي بخش تاپيك بزنم-لطفا اگر بد جايي مديران تصحيح كنند
من يك بانك sql اطلاعات مي گيرم و توي گريد نمايش ميدم ولي دريافت اطلاعات حدود 10-20 ثانيه طول مي كشه
حالا مي حواستم يك پروگرس بار كا با ميزان دريافت اطلاعات از بانك پيشرفت كنه و برنامه هم هنگ نكنه
با تشكر

daniyal_1363
شنبه 11 اردیبهشت 1389, 21:03 عصر
سلام
من يك بانك sql اطلاعات مي گيرم و توي گريد نمايش ميدم ولي دريافت اطلاعات حدود 10-20 ثانيه طول مي كشه
حالا مي حواستم يك پروگرس بار كا با ميزان دريافت اطلاعات از بانك پيشرفت كنه و برنامه هم هنگ نكنه
با تشكر


این مشکل من هم هست

حدود 750000 رکورد دارم که موقع لود کردن و جستجو هنگ میکنه تا کارش تموم نشه

niko2008
شنبه 11 اردیبهشت 1389, 23:16 عصر
این مشکل من هم هست

حدود 750000 رکورد دارم که موقع لود کردن و جستجو هنگ میکنه تا کارش تموم نشه
شاید حدود 750000 رکورد رو بدون اندیکس گذاری لود میکنید؟؟؟؟

daniyal_1363
یک شنبه 12 اردیبهشت 1389, 10:12 صبح
شاید حدود 750000 رکورد رو بدون اندیکس گذاری لود میکنید؟؟؟؟

منظورتون رو متوجه نمیشم ، میشه بیشتر توضیح بدیدن ؟ وقتی آدرس بانک رو به Ado میدی و Refresh همچنین در زمان Select چند فیلد با مشخصات مشخص میکنی این عمل اتفاق میفته

gonbad city
یک شنبه 12 اردیبهشت 1389, 14:58 عصر
سلام
اول از همه نمي دونستم بايد تو كدوم قسمت فرعي بخش تاپيك بزنم-لطفا اگر بد جايي مديران تصحيح كنند
من يك بانك sql اطلاعات مي گيرم و توي گريد نمايش ميدم ولي دريافت اطلاعات حدود 10-20 ثانيه طول مي كشه
حالا مي حواستم يك پروگرس بار كا با ميزان دريافت اطلاعات از بانك پيشرفت كنه و برنامه هم هنگ نكنه
با تشكر

دوست عزیز این کار فوق العاده آسونه
فقط کافیه
progress.max=ado1.recordset.recordcount

بعدش
توی حلقه ای که اطلاعاتتون رو از دیتابیس می گیرید و لود می کنید مقدار پروگرس بار را یکی اضافه کنید
برای روشن شدن موضوع به کد توجه کنید
progress.max=ado1.recordset.recordcount

[ for i=1 to ado1.recordset.recordcount
list1.additem ado1.recordset(1).value
ado1.recordset.movenext
progress.value=i
next




اگر متوجه شدی نظر یادت نره!!

javadt
یک شنبه 12 اردیبهشت 1389, 19:14 عصر
از حلقه استفاده نمي كنيم
اطلاعات زياد رو توي گريد نمايش ميديم و ديتا سورس به گريد پاس ميديم

daniyal_1363
دوشنبه 13 اردیبهشت 1389, 10:55 صبح
منظور اینه دوست عزیز



ado.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Data.mdb;Persist Security Info=False"
ado.RecordSource = "select * from fa order by date "
ado.Refresh


اینجا باید چه جوری از progress استفاده کرد ؟

mpmsoft
دوشنبه 13 اردیبهشت 1389, 12:43 عصر
دوست عزیز راهی نداره و استفاده از لوپ هم اصلا روش درستی نیست در VsFlex هم به شما این امکان رو نمی ده بتونید درصد پیشرفت نمایش اطلاعات رو بدست بیارید

روش دیگری هست استفاده از multiThread هست که می تونید روتین نمایش را تبدیل به یک multithread کنید و تا انتهای نمایش کامل اطلاعات بروی گرید یک merge progress بگذارید

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

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

مهران رسا
دوشنبه 13 اردیبهشت 1389, 15:01 عصر
منظور اینه دوست عزیز



ado.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Data.mdb;Persist Security Info=False"
ado.RecordSource = "select * from fa order by date "
ado.Refresh

اینجا باید چه جوری از progress استفاده کرد ؟


این عملیات به صورت داخلی توسط شی Ado صورت میگیره . در حالت عادی کنترل روند پیشرفت اعمال Ado امکان پذیر نیست . مگراینکه از روش های ابتکاری استفاده کنید .

javadt
دوشنبه 13 اردیبهشت 1389, 16:06 عصر
الان VsFlex براي نمايش اطلاعات حجيم 15-20 ثانيه طول ميده و اين براي كاربر خيلي آزار دهندست
حالا شما اساتيد چه روشي رو پيشنهاد مي كنيد
با تشكر

daniyal_1363
دوشنبه 13 اردیبهشت 1389, 16:30 عصر
دوست عزیز راهی نداره و استفاده از لوپ هم اصلا روش درستی نیست در VsFlex هم به شما این امکان رو نمی ده بتونید درصد پیشرفت نمایش اطلاعات رو بدست بیارید

روش دیگری هست استفاده از multiThread هست که می تونید روتین نمایش را تبدیل به یک multithread کنید و تا انتهای نمایش کامل اطلاعات بروی گرید یک merge progress بگذارید

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

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

میشه یه نمونه بزارید ؟ در این دو مورد هیچ اطلاعاتی ندارم

xxxxx_xxxxx
دوشنبه 13 اردیبهشت 1389, 18:59 عصر
یک پروگرس بار بزارید که انتهای آن مشخص نباشه و مثل یک حلقه در حال گردش باشه.
مثل پروگرس باری که ویندوز داره بالا میاد.