آموزش نكات فني قفل گذاري مبتني بر Trial Keeper Professional بخش اول - نسخهی قابل چاپ +- فروم تخصصی - پشتیبانی CPSD (http://cpsd.ir/forum) +-- انجمن: محصولات (/forumdisplay.php?fid=1) +--- انجمن: غیر رایگان (/forumdisplay.php?fid=7) +---- انجمن: Trial Keeper Professional (/forumdisplay.php?fid=4) +----- انجمن: مقالات و مثال های آموزشی مرتبط با Trial Keeper Professional (/forumdisplay.php?fid=18) +----- موضوع: آموزش نكات فني قفل گذاري مبتني بر Trial Keeper Professional بخش اول (/showthread.php?tid=76) |
آموزش نكات فني قفل گذاري مبتني بر Trial Keeper Professional بخش اول - CPSD Admin - ۱۸ تير ۱۳۹۰ ۰۹:۴۶ عصر با سلام در این جلسه قصد دارم مقداری در خصوص فراخوانی تابع 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 در قطعه كد بالا قصد داريد كه كاربر در صورتي كه برنامه رو ثبت نكرده پيغامي مزاحم رو مشاهده كنه . اگه دقت كرده باشيد در اين حالت كاربر علاوه برمشاهده پيغام مزاحم با تاخيري در اجراي فرمان مورد نظرش هم مواجه ميشه .
كد بالا رو ميتونيد به صورت زير بنويسيد : کد: If XYZ<>10 Then نتيجه در هر دو حالت هموني ميشه كه شما انتظار داريد ولي اين بار بدون تاخير ناشي از اجراي تابع Initialize
نكته : در حالت دوم شما نياز داريد كه حداقل يك بار تابع Initialize رو فراخواني كرده باشيد . اين روال ميتونه در داخل رويدار On Load فرم بوده باشه . در اين حالت مقدار برگشتي به XYZ انتساب داده ميشه و شما ميتونيد از اون مقدار به دفعات متوالي در نقاط مختلف استفاده به عمل بياريد ، بدون اينكه تاثيري بر روي كارايي برنامه داشته باشه . خوشبختانه تابع Initialize به گونه اي طراحي شده كه حتي در صورت دور زدن روال كنترلي موجود در داخل برنامه شما ( فراخواني تابع ) كد برگشتي به گونه اي خواهد بود كه دال بر عدم ثبت بودن برنامه خواهد داشت و ليكن جهت حصول اطمينان بيشتر توجه شما رو به نكات زير جلب ميكنم : تابع Initialize رو حداقل در دو رويداد متفاوت مورد بازخواني قرار بديد به طور مثال در دو رويداد On Load و On Activate . در انتخاب اين رويدادها به نكات زير توجه داشته باشيد : رويداد مرتباً تكرار نشود ( مثل On Current ) در داخل رويدادهاي مورد نظر عملياتي ديگر نيز به انجام برسه تا در صورت حذف رويداد توسط كركر بخشي ديگر از برنامه نيز مختل بشه . به طور مثال در داخل رويدار On Load علاوه بر فراخواني قفل عمليات انتساب Control Source رو هم به انجام برسونيد . امكان فراخواني قفل در داخل رويدادهاي تكرار پذير نيز ميتونه ايده اي بسيار مناسب بوده باشه و ليكن جهت انجام اون نياز به انجام مرحله اي اضافه داريد تا در مجموع منجر به كاهش زمان سربار فراخواني تابع Initialize بشيد . ادامه آموزش رو به جلسه بعد موكول ميكنم . موفق باشيد |