نمایش نتایج 1 تا 7 از 7

نام تاپیک: نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

  1. #1

    نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

    باسلام و عرض خسته نباشید
    مشکلی دارم که خیلی وقته باهاش درگیرم
    چطور میتونم پیشرفت انجام عملیاتم رو با پروسزبار نمایش بدم و مقدار پروسزبارم رو با حجم عملیاتی که داره انجام یمشه ست کنم؟
    فرض کنید میخوام 70000 هزار رکورد از یک دیتابیسم رو update کنم ، چطور میتونم این پیشرفت این عملیات رو با پروسزبار نمایش بدم
    کاری که در حال حاضر میکنم اینه:
    Adodc1.Recordset.Close
    Adodc1.Recordset.Open "UPDATE Table2 SET Table2.a = Replace(Table2.a,'" & Text1.Text & "','" & Text2.Text & "');"
    Adodc1.Refresh
    Me.ProgressBar1.Min = 0
    Me.ProgressBar1.Max = Adodc1.Recordset.RecordCount
    For i = 0 To Adodc1.Recordset.RecordCount
    Me.ProgressBar1.Value = i
    Next i

    خب انکار فقط جنبه نمایشی داره و عملیات اصلی ابتدا انجام میشه و بعد پروسزبار به صورت کارتونی نمایش داده میشه
    نکته مهم دیگه اینه که تا زمانیکه عملیات انجام بشه فرم برنامه هنگ میکنه!؟
    در حالیکه در ویندوز اینطور نیست ، زمانیکه شما مثلاً دارید 200gig اطلاعات رو کپی میکنید ، همراه با عملیات اصلی (کپی گرفتن فایلها) پروسزبار داره رشد میکنه و فرمی که داره عملیات کپی رو نشون میده به هیج وجه هنگ نمیکنه
    بنده قصدم از ارائه این مثال (بانک اطلاعاتی) فقط این بود که بدونم باید از چه روشی استفاده کنم تا در عملیات مختلف(بروزآوری رکوردها ، حذف رکوردها ، حذف فایل ، کپی گرفتن فایلها و...) میزان پیشرفت عملیات رو با پروسز بار نشون بدم ، ضمن اینکه انجام بعضی از عملیات مثل بروز آوری 70000 رکورد در یک حلقه قرار نمیگیره که بتوان میزان پیشرفت عملیات و پروسزبار رو در یک حلقه نمایش بدم.
    ممنون میشم راهنماییم کنید
    خیلی خیلی ممنونم
    یاعلی
    آخرین ویرایش به وسیله ali190 : جمعه 10 دی 1389 در 01:30 صبح دلیل: غلط املایی

  2. #2

    نقل قول: نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

    کار هیچ وقت نشد نداره ولی تا اونجایی که من میدونم در اینجور موارد چاره ای نیست جز اینکه عملیات رو به چند قسمت تقسیم کنید .. اگه پایگاه داده تون اصولی طراحی شده باشه اکثرا اینکار امکان پذیره .. مثلا اگه یک فیلد شمارنده داشته باشید تو پایگاه داده میشه هر بار 100 تا از 700000 رکورد رو آپدیت کرد.
    همونطور که خودتون گفتید ado وقتی کار کنه برنامه هنگ میکنه و هیچ کاری نمیشه انجام داد یعنی کنترل از دست کدهای ما خارجه.. تنها حالتی که از طریق خود ADO امکان اینکه به نحوی پیشرفت کار نشون داده بشه اینه که ADO خودش قبل از عملیات تعداد عملیات رو محاسبه کنه و سپس به صورت درونی خودش یک progressbar رو نشون بده که در این صورت خود شمارش حالتها وقت گیره و سرعت کار رو پایین میاره جدا از این بعضی از دستورات sql به اندازه ای پیچیده هستند که امکان محاسبه ی تعداد عملیات عملا غیر ممکنه بنابراین شما سعی کنید پایگاه داده تون رو تغییر بدید فکر نمیکنم این امکان رو ado در احتیارتون قرار بده .. البته عرض کردم کار نشد نداره ..

  3. #3

    نقل قول: نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

    سلام
    مممنون از پاسختون
    من ado مثال زدم، این مشکل رو در بسیاری از عملیات دیگه هم دارم
    مثلاً فرض کنید دارم 200 فایل رو با دستور filecopy از یک درایو به درایو دیگه انتقال میدم ، اونجا چطور میتونم با پیشرفت عملیات کپی ام پروسزبارم رو رشد بدم (فرض کنید کپی شدن هر فایل در درایو جدید یک واحد پروسزبارم رو رشد بده) همینطور در مورد حذف دسته جمعی فایلها و...
    ممنون
    یاعلی

  4. #4
    کاربر دائمی آواتار returnx
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    ?
    پست
    1,190

    نقل قول: نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

    اصولا باید مقدار عملیات رو به شکل درصد بدست بیارید فرض کنید ما می خواهیم یم فایل رو کپی کنیم میتونیم این فایل رو به بایت ها تقسیم کنیم و بایت به بایت بفرستیم به طور مثال ما یک فایل داریم که 2000 بایت حالا برای کپی هر بایت به Counterمون یک واحد اضافه میکنیم و حالا به شکل در صد به دست میاریم ... نحو بدست آوردن:
    Counter*100/end

    end در فرمول بالا اخرین بایتمونه یعنی 2000 حالا فرض کنید ما صدمین بایت رو فرستادیم میخوایم ببینیم چند درصد رو فرستادیم :
    100*100/2000=5

    امیدوارم بهتون کمک کرده باشه...

  5. #5

    نقل قول: نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

    سلام
    منظورم دسته ای از فایلهاست ، نه یک فایل
    مثلاً پیشرفت عملیاتی کپی یا حذف شدن 100 فایل

  6. #6

    نقل قول: نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

    سلام دوست عزيز
    براي مطلب كه گفتيد فرم برنامه در هنگام به روز آوري ركورد ها هنگ ميكنه به علت عدم پشتيباني وي بي 6 از خاصيت چند خطي است و فرم برنامه در واقع هنگ نميكنه بلكه منتظر ميمونه تا عمليات درخواستي به ترتيب انجام بشه .ميتوني در اين رابطه تو تالار يه سرچ بزني
    براي نمايش روند كار تو پروگرس بار همون روش رو من انجام ميدم ولي نه با adodc
    من بوسيله adodb ابتدا كل ركوردها را با يك DO WHIL مي شمارم و ماكزيميم پروگرس بارم رو بدست مياورم و مابقي عمليات

  7. #7

    نقل قول: نمایش پیشرفت عملیات منطبق با سرعت سیستم با استفاده از پروسز بار

    خوب بدست آوردن max تعداد رکوردها با adodc هم قابل بدست آوردنه
    چرا adodb؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •