آموزش نكات فني قفل گذاري مبتني بر Trial Keeper Professional بخش اول
همونطوري كه ميدونيد ميشه اقدام به تعريف يك متغير كرد تا اين متغير عمليات نگهداري يك نوع داده رو به عهده بگيره .
ما متغير رو به صورت زير تعريف ميكنم :
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 بشيد .
ادامه آموزش رو به جلسه بعد موكول ميكنم .
موفق باشيد