در باره Validation و Shared Logic در فرم های UnBound
فرض کنید یک فرم unbound داریم که چند کنترل آن دارای کد یکسان (از نظر منطق) هستند - (معمولا در validation و محاسبات).
این فرم میتونه یک فرم data entry باشه ، یا یک فرم تعیین شرایط برای یک فرم دیگه یا یک گزارش، یا یک فرم کاملا مستقل.
تا زمانی که تعداد این فیلدهای با کد مشترک (معمولا تکس باکس برای شماره یا متن) ثابت و کم باشه، مشکلی پیش نمیاد:
مثلا برای تعیین محدوده گزارش دو فیلد تاریخ شروع و تاریخ پایان هست که همیشه همین هست و کم و زیاد نمیشه،
یا برای نام و نام خانوادگی و نام پدر و مادر و ... تعداد کم و مشخص هست،
و برای این حالت ها مشکلی در نگهداری برنامه (بابت تغییر در کدها) پیش نمیاد - دقیقا بخاطر محدود و مشخص بودن.
حالا حالتی رو فرض کنین مشابه تاپیک محاسبه میانگین بدون در نظر گرفتن صفر درچند تکست باکس در فرم
1- پست 6 و 7 همون تاپیک یک نمونه از روش ابتدایی حل مسئله اس - که ناقصه و validation نداره.
2- پست 16 همون تاپیک یک پله بالاتر هست چون محاسبات مستقل از تعداد فیلدهاست،
ولی هنوز ناقصه چون validation نداره.
4- در پست 11 همون تاپیک روش درست استفاده شده،
ولی این هم هنوز خام هست.
یک روش هم هست (روش 3) که آخر سر در موردش میگم .
اینجا برای همه اینها نمونه میذارم و خواهیم دید که چرا در بعضی مواقع حتی اگر دیتا فرم قرار نیست در دیتابیس ذخیره بشه،
باز هم bound کردن اون چقدر میتونه کدنویسی رو کمتر و راحتتر کنه.
نقل قول: در باره Validation و Shared Logic در فرم های UnBound
برای شروع فرض کنید که نیاز به یک فرم داریم که:
1- 8 تکسباکس داشته باشه
2- که هر یک از اونها یک عدد بین 0 تا 100 قبول کنه (double)
3- و فیلدهای خالی 0 منظور بشن (در محاسبه و نمایش)
4- یک میانگین برای همه محاسبه بشه با دقت تا 3 رقم اعشار
5- یک میانگین هم برای فقط غیر صفر ها محاسبه بشه - فقط اگر دست کم یک غیر 0 داشته باشیم
6- کاربر اجازه ورود مقادیر نادرست نداره (validation الزامی است)
نقل قول: در باره Validation و Shared Logic در فرم های UnBound
نقل قول:
نوشته شده توسط
mazoolagh
2- پست 16 همون تاپیک یک پله بالاتر هست چون محاسبات مستقل از تعداد فیلدهاست،
ولی هنوز ناقصه چون validation نداره.
عرض سلام و خسته نباشی خدمت جناب آقای مازولاق عزیز!
لطفاً راهنمائی بفرمائید اگر در کد های پست 16 تاپیک محاسبه میانگین بدون در نظر گرفتن صفر درچند تکست باکس در فرم از طریق تابع IsNumeric اعتبار سنجی شود که اگر در یکی از تکست باکس ها غیر عدد وارد شد پیغام خطا صادر شود و بر روی تکست باکس مربوطه فوکوس شود باز هم مشکلی وجود دارد ؟
مثلاً از تابع IsNumericدر حلقه For Each بعد از IF دوم کدهای زیر بکار رود:
If IsNumeric(ctrl.Value) Then
CountCtrl = CountCtrl + 1
SumCtrl = SumCtrl + ctrl.Value
Else
ctrl.SetFocus
MsgBox "اطلاعات وارده معتبر نمي باشد"
Exit Sub
End If
نقل قول: در باره Validation و Shared Logic در فرم های UnBound
با عرض پوزش ، با توجه به اینکه تاپیک جنبه آموزشی دارد بهتر بود سوال بالا رو در همون تاپیک مربوطه میپرسیدم