نوشته شده توسط
mostafa_zamani
با سلام و تشکر خدمت جناب خواجه زاده
کنترل مقادیر فیلدها و بطور کلی مبحث جامعیت داده ها (Data integrity ) اگر در قسمت طراحی جدول انجام شود، بسیار مطمئن تر است .
در این روش کنترل فقط در یکجا انجام می شود و اگر درست عمل کند جامعیت داده ها تضمین شده است و همه جا عمل می کند .
بطور مثال اگر کاربر جدولها را مستقیما نیز باز کند باز هم این کنترل عمل می کند .
بنده ابتدا کنترل را روی تک تک فیلدها گذاشتم (در Table Designer در قسمت Rule ) و در message هم پیام گذاشتم ، ولی ویژوال فاکس پیام بنده را با دکمه OK , Revert نشان می دهد که پیام مناسبی برای کاربر نیست .
سپس در فرم در رویداد Valid نیز کنترل گذاشتم (بعنوان کنترل ثانوی) ، ولی نکته اینست که دستور نوشته شده در Rule زودتر از رویداد Valid اجرا می شود !
در آخر تصمیم گرفتم که کنترل همه فیلدها را در قسمت Record Validation بگذارم بصورت زیر :
ICASE(ID<=0,.F.,EMPTY(nam),.F., LEN(ALLTRIM(cd_mli))#10,.F., LEN(ALLTRIM(cd_psti))#10,.F.,.T.)
و در قسمت Message پیام مناسبی برای همه فیلدها گذاشتم .
با این روش در فرم ها با رویداد Valid مقادیر وارد شده کاربر را کنترل می کنم ، ولی اگر چیزی از دستم در رفت ، قسمت Record Validation کنترل را انجام می دهد .
دوستان گرامی ! لطفا این روش را نقد کنید !