ارسال پاسخ 
 
امتیاز موضوع:
  • 8 رأی - میانگین امتیازات: 3.25
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش نكات فني قفل گذاري مبتني بر Trial Keeper Professional بخش اول
نویسنده پیام
CPSD Admin آفلاین
مدیر سایت
*******

ارسال‌ها: 177
تاریخ عضویت: تير ۱۳۸۹
اعتبار: 0
ارسال: #1
Information آموزش نكات فني قفل گذاري مبتني بر Trial Keeper Professional بخش اول
با سلام

در این جلسه قصد دارم مقداری در خصوص فراخوانی تابع Initialize موجود در داخل Trial Keeper Professional توضیحاتی رو ارائه کنم .

در پروسه كنترل بايد دقت كنيد كه حتماً روال كنترلی رو به صورت چندين باره در داخل خود برنامه هم تكرار كنيد ، تا در صورت غير فعال شدن هر يك از نقاط كنترلي در محلهايي ديگه بتونيد بر روي عملكرد قفل صحه گذاري كنيد .

تكرار چندين باره عمليات فراخواني قفل ميتونه تا حدودي بر روي سرعت اجراي خود برنامه تاثير گذار باشه ، نكات زير ميتونه به شما در كاهش اين زمان كمك كنه .

در داخل Trial Keeper Professional اگه دقت كرده باشيد وضعيت جاري قفل از طريق كدي كه از تابع Initialize بازگردانده ميشه قابل تشخيصه .

به طور مثال كد شماره 1 نشان دهنده عدم پايان دوره آزمايشي و كد شماره 10 نشاندهنده فعال بودن و يا همان ثبت بودن برنامه ميباشد .

شما ممكنه در نقاط مختلفي بخوايد اين تابع رو بارگذاري كنيد و با استفاده از مقدار برگشتي اون به وضعيت جاري پي ببريد . به طور مثال شما ممكنه اين كد رو در داخل روال انتساب داده شده به دكمه اي كه عمليات نمايش يك گزارش رو به انجام ميرسونه فراخواني كنيد . در صورتي كه اين گزارش در يك جلسه كاري به دفعات زيادي از سوي كاربر مورد استفاده قرار ميگيره ، فراخواني چندين باره قفل ميتونه تا حدودي براي كاربر ايجاد مزاحمت كنه ( با توجه به مكثهاي صورت پذيرفته تا زمان اجراي فرمان مورد نظر )

راه حل پيشنهادي رو در ادامه ذكر ميكنم تا سربار كاري رو به نحوي قابل توجه كاهش بديم :

همونطوري كه ميدونيد ميشه اقدام به تعريف يك متغير كرد تا اين متغير عمليات نگهداري يك نوع داده رو به عهده بگيره .

ما متغير رو به صورت زير تعريف ميكنم :

Dim XYZ As Byte

دقت كنيد كه نام XYZ اختياري بوده و شما هر نامي رو ميتونيد به اين متغير اختصاص بديد .

نوع اين متغير رو هم از نوع همون مقدار برگشتي از تابع Initialize قرار داديم يعني Byte .

در داخل فرمها و گزارشها ميتونيد اين قطعه كد رو در بالاترين بخش ماژول موجود در داخل هر يك از اونها كپي كنيد .

در اين حالت شما اين متغير رو به نحوي تعريف كرديد كه براي تمامي روالهاي موجود در داخل فرم و يا گزارش مورد نظر قابل دسترسي باشه .

حال با يك بار فراخواني تابع Initialize و انتساب اون به اين متغير ، در دفعات بعدي شما فقط نيار داريد كه مقدار موجود در داخل اين متغير رو مورد بررسي قرار بديد . به قطعه كد زير توجه كنيد :

کد:
XYZ=Initialize( ….. )

قبلاً ممكن بود كه شما از خروجي تابع Initialize به صورت زير استفاده مي كرديد :

به طور مثال در داخل روال On Click يك دكمه ، دستور زير رو فراخواني كرديد :

کد:
If Initialize(…..)<>10 Then

MsgBox "Sample Nag Message"

End if

در قطعه كد بالا قصد داريد كه كاربر در صورتي كه برنامه رو ثبت نكرده پيغامي مزاحم رو مشاهده كنه . اگه دقت كرده باشيد در اين حالت كاربر علاوه برمشاهده پيغام مزاحم با تاخيري در اجراي فرمان مورد نظرش هم مواجه ميشه .

كد بالا رو ميتونيد به صورت زير بنويسيد :

کد:
If XYZ<>10 Then

MsgBox "Sample Nag Message"

End if

نتيجه در هر دو حالت هموني ميشه كه شما انتظار داريد ولي اين بار بدون تاخير ناشي از اجراي تابع Initialize

نكته : در حالت دوم شما نياز داريد كه حداقل يك بار تابع Initialize رو فراخواني كرده باشيد . اين روال ميتونه در داخل رويدار On Load فرم بوده باشه . در اين حالت مقدار برگشتي به XYZ انتساب داده ميشه و شما ميتونيد از اون مقدار به دفعات متوالي در نقاط مختلف استفاده به عمل بياريد ، بدون اينكه تاثيري بر روي كارايي برنامه داشته باشه .

خوشبختانه تابع Initialize به گونه اي طراحي شده كه حتي در صورت دور زدن روال كنترلي موجود در داخل برنامه شما ( فراخواني تابع ) كد برگشتي به گونه اي خواهد بود كه دال بر عدم ثبت بودن برنامه خواهد داشت و ليكن جهت حصول اطمينان بيشتر توجه شما رو به نكات زير جلب ميكنم :

تابع Initialize رو حداقل در دو رويداد متفاوت مورد بازخواني قرار بديد به طور مثال در دو رويداد On Load و On Activate . در انتخاب اين رويدادها به نكات زير توجه داشته باشيد :

رويداد مرتباً تكرار نشود ( مثل On Current )

در داخل رويدادهاي مورد نظر عملياتي ديگر نيز به انجام برسه تا در صورت حذف رويداد توسط كركر بخشي ديگر از برنامه نيز مختل بشه .

به طور مثال در داخل رويدار On Load علاوه بر فراخواني قفل عمليات انتساب Control Source رو هم به انجام برسونيد .

امكان فراخواني قفل در داخل رويدادهاي تكرار پذير نيز ميتونه ايده اي بسيار مناسب بوده باشه و ليكن جهت انجام اون نياز به انجام مرحله اي اضافه داريد تا در مجموع منجر به كاهش زمان سربار فراخواني تابع Initialize بشيد .

ادامه آموزش رو به جلسه بعد موكول ميكنم .

موفق باشيد

درگاه : وب سايت | فروشگاه | وبلاگ
۱۸ تير ۱۳۹۰ ۰۹:۴۶ عصر
مشاهده‌ی وب سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information آموزش نكات فني قفل گذاري مبتني بر Trial Keeper Professional بخش دوم CPSD Admin 0 12,198 ۲۳ مرداد ۱۳۹۰ ۰۹:۲۷ عصر
آخرین ارسال: CPSD Admin

پرش به انجمن:


‍CPSD.ir Website

وب سايت      |      وبلاگ      |      فروشگاه

 

Center Point SD - Software Developer

Yaldex PopUp