PDA

View Full Version : خبر: نمونه ساده و اصلاح شده اعتبار سنجی کد ملی بدون ماژول خارجی



royasaz_bam
چهارشنبه 09 شهریور 1390, 02:34 صبح
در این نمونه بدون استفاده از ماژول خارجی و بعد از خارج شدن از فیلد "ON EXIT " اعتبار سنجی انجام می شود و شماره ملی صحیح کمتر از 10 رقم را بدون نیاز به قراردادن صفر در ابتدای آن قبول و بدون تنظیمات اینپوت ماسک به ابتدای آن صفر اضافه میکند مثال شماره ملی "53593286" را وارد نمایید زیرا در نمونه های موجود در صورت وارد کردن کد ملی ذکر شده پیام خطای کمتر از 10 رقم داده میشود و این درحالیست که کد ملی صحیح میباشد و کاربر مجبور به اضافه کردن صفر میباشد و همچنین دیگر نیاز به تنظیمات اینپوت ماسک جهت نمایش صفر در ابتدای کد ملی نمیباشد
امیدوارم به کار دوستان بیاید

royasaz_bam
پنج شنبه 10 شهریور 1390, 03:15 صبح
کسی نظر و یا راهکاری برای هرچه بهتر شدن و کاربردی شدن این نمونه نداره از دوستانی که دانلود کرده اند درخواست دارم نظرات و انتقادات خود را در هرچه کابردی شدن این نموه بدهند به طور مثال هنگامی که کد ملی را بطور صحیح وارد مینماییم و بعد از خارج شدن از فیلد برای بالا بردن سرعت کار کابر از دادن پیامی مبنی و درست بودن کد ملی اجتناب شده زیرا این عمل باعث ایجاد وقفه در ثبت اطلاعات میگردید و کار حرفه ای بنظر نمی یاد ولی خوب کار دیگری که متوان کرد برای اینکه کاربر مطمعا شود کد ملی معتبر است میخواستم بعد از خارج شدن از فید شماره ملی به رنگ سبز در آید و بلعکس در صورت معتبر نبودن به رنگ قرمز در آید ولی به کاربر همچنان امکان ادامه کار را بدهد و این عمل در همان تابع داخلی on exit باشد کسی نظری ندارد

mehdi_fiz
جمعه 11 شهریور 1390, 23:22 عصر
سلام دوست عزیز
نمونه که من گذاشته بودم جهت نمایش روال کلی تابع بود به همین خاطر پیام معتبر بودن نمایش داده می شد ضمن اینکه اگر در نمونه شما کاربر دو عدد یا سه عدد کم تر وارد کند سه صفر به اول آن اضافه می کند و کد ملی اشتباه می شود ولی باید پیام کمتر بودن ارقام کد ملی ظاهر شود.
موفق باشید

royasaz_bam
شنبه 12 شهریور 1390, 00:40 صبح
دوست عزیز سلام
و ممنون که نمومه را در اختیارم گذاشتی تغیرات داده شده تنها جهت تنظیم راسته نرمافزار خودم بود و میخواستم برای دیگران نیز بگذارم مگرنه نمونه اصلی از شما بوده و فقط یک توضیح اینکه اگر کد ملی در اثر اضافه کردن خودکار صفر به ابتدای آن اشتباه شود در اعتبار سنجی اعلام میگردد و فقط در صورت اینکه کاربری به قصد وارد کردن 10 رقم اشتباها 9 رقم را وارد کند تابع خودکار به ابتدای آن صفر اضافه میکند و تجربه من از وارد کردن کد ملی این را ثابت کرده که کم شدن یک عدد در کد ملی و جایگزینی آن با عدد مثلا صفر حتی به طور تصادفی اعتبار آن را تایید نمیکند و این از مزایای الگوریتم کد ملی می باشد

somayeh1361
دوشنبه 22 خرداد 1391, 11:19 صبح
سلام نمونه شما خطاي پيوستي را مي ده اشکال از کجاست88129

royasaz_bam
سه شنبه 23 خرداد 1391, 22:58 عصر
ابدیت دوست عزیز به جای استفاده از اوت اکزیت از اونت افتر ابدیت استفاده کن در کل این نمونه اولیه بود که من خیلی وقت پیش آن هم با دست کاری یک نمونه دیگر درست کرده بودم لذا نمونه ای را که میخواهی استفاده کنی بگذار تا شخصا اصلاح نمایم

royasaz_bam
چهارشنبه 24 خرداد 1391, 01:13 صبح
دستورات ذیل را بصورت یک ماژول در پروژه ات ذخیره کن سپس از تابع mn در اونت افتر ابدیت فیلد مربوطه به این صورت
text0 = mn(text0)
استفاده کن


کدهای ماژول mn


Function mn(Entery As String) As String


Dim c@, n@, r@
If Len(Entery) > 10 Then
MsgBox "˜Ï ãáí ÑÇ ÈíÔ ÇÒ 10 ÑÞã æÇÑÏ äãæÏå ÇíÏ"
mn = ""
Else
mn = String(10 - (Len(Entery)), "0") & (Entery)


If mn = "0000000000" Or _
mn = "1111111111" Or _
mn = "2222222222" Or _
mn = "3333333333" Or _
mn = "4444444444" Or _
mn = "5555555555" Or _
mn = "6666666666" Or _
mn = "7777777777" Or _
mn = "8888888888" Or _
mn = "9999999999" Then
MsgBox "˜Ï ãáí æÇÑÏ ÔÏå ÌÚáí ãí ÈÇÔÏ"
mn = ""
Else

c = Val(Mid$(mn, 10, 1))

n = Val(Mid$(mn, 1, 1)) * 10 + _
Val(Mid$(mn, 2, 1)) * 9 + _
Val(Mid$(mn, 3, 1)) * 8 + _
Val(Mid$(mn, 4, 1)) * 7 + _
Val(Mid$(mn, 5, 1)) * 6 + _
Val(Mid$(mn, 6, 1)) * 5 + _
Val(Mid$(mn, 7, 1)) * 4 + _
Val(Mid$(mn, 8, 1)) * 3 + _
Val(Mid$(mn, 9, 1)) * 2

r = n - Int(n / 11) * 11

If (r = 0 And r = c) Or (r = 1 And c = 1) Or (r > 1 And c = 11 - r) Then
Else
MsgBox "˜Ï ãáí æÇÑÏ ÔÏå ÌÚáí ãí ÈÇÔÏ"
mn = ""

End If

End If
End If

End Function