PDA

View Full Version : سوال: کنترل محدوده اعداد در فیلد تاریخ



hf.farhadi
چهارشنبه 10 فروردین 1390, 20:17 عصر
با سلام خدمت دوستان و اساتید گرامی:لبخندساده:
میخوام برای فیلد تاریخ کد یا تابعی بنویسم که در صورت وارد کردن اعداد غیر منطقی(مانند 32/40/32 ،یعنی تعداد روزها بیشتر از 31 و تعداد ماهها بیشتر از 12 باشند ،سال زیاد مهم نیست) تو این حالت میخوام یه پیام فارسی به کاربر برگردونم.چطوری میتونم این کار رو انجام بدم. لطفاً کمکم کنید.

mazoolagh
یک شنبه 14 فروردین 1390, 19:31 عصر
بهترین جا برای کنترل مقدار در رخداد before update هست. در اینصورت شما میتونین به مقدار فیلد با ویژگی text دسترسی داشته باشین. مثلا اگر اسم فیلد شما birth_date باشه مقدار فیلد رو میتونین با birth_date.text بخونین.

1- input mask فیلد رو بصورت ##/##/## تعریف کنین.
2- یک تابع عمومی برای کنترل مقدار تاریخ بنویسین که بتونین در تمام برنامه تون ازش استفاده کنین. یک چیزی شبیه به کد پایین که خودتون تکمیلش کنین.
این تابع اگر مقدار فیلد درست باشه true و در غیراینصورت false برمیگردونه.


public function date_isok(x as string) as boolean
date_isok = true
if instr(x,"_")>0 then
date_isok = false ' incomplete
else
dim yy,mm,dd as integer
yy = cint(mid(x, 1, 2))
mm = cint(mid(x, 4, 2))
dd = cint(mid(x, 7, 2))
...
...
...
end if
end function


3- چون mask برای فیلد تعریف کردین وقتی که mask تکمیل نیست جاهای خالی فیلد با _ پر میشه.
4- مقادیر سال و ماه تاریخ در yy,mm,dd ذخیره میشه.
5- بجای ... کد کنترلی خودتون رو بگذارین.

حالا در هر جای برنامه تون هر جا فیلد تاریخ داشته باشین کد زیر رو برای رخداد before update استفاده کنین:


if not date_isok(me.birth_date.text) then
msgbox("invalid date")
cancel = true
end if

stabesh
یک شنبه 14 فروردین 1390, 20:15 عصر
با سلام
چرا هیچکس در جواب دوستانی که با تاریخ مشکل دارند پیشنهاد استفاده از ماژولهای Access Persian Tools رو نمیده مگه مشکلی دارند
http://stabesh.hpage.com/get_file.php?id=1105499&vnr=941580

mazoolagh
یک شنبه 14 فروردین 1390, 20:29 عصر
سلام آقای تابش
به هزار و دو دلیل !
1- خبر نداشتیم
2- سال هاست با همین روش خو کردیم

stabesh
یک شنبه 14 فروردین 1390, 20:50 عصر
با سلام و تبریک سال نو
البته من خانم تابش هستم
ولی واقعا این کلاس و ماژولش درسته من تاریخای مختلفی بهش دادم به نظر درسته و بازه زمانیش هم خوبه ولی توابعش یه چیزایی کم داره که یکی از همکارای من در حال اصلاحشه
اینم آخرینش
http://stabesh.hpage.com/get_file.php?id=1105592&vnr=270219
میخواستم بدونم اونایی که ازش استفاده کردن ازش راضین
جناب فرهادی تابع vliaddate را در before update تکست باکس تاریخ بذارید اگر false بود cancel رو true نمایید