بدست آوردن کد ملی توسط فرمول
سلام یه کد اشتباه رو تا یک جا دیدیم توی ده تا سایت دیگه هم نشر میدیمش کسی نمدونست که این کد اشکال داره این کد جاوا اسکریپت بود که من میخواستم به ویژوال بسیک تبدیل کنمش که پی به اشتباه اون بردم
function checkMelliCode(varmellicode)
{
var meli_code;
meli_code=varmellicode.value;
if (meli_code.length == 10)
{
if(meli_code==’1111111111′ ||
meli_code==’0000000000′ ||
meli_code==’2222222222′ ||
meli_code==’3333333333′ ||
meli_code==’4444444444′ ||
meli_code==’5555555555′ ||
meli_code==’6666666666′ ||
meli_code==’7777777777′ ||
meli_code==’8888888888′ ||
meli_code==’9999999999′ )
{
alert(”کد ملی صحیح نمی باشد”);
objcode.focus();
return false;
}
c = parseInt(meli_code.charAt(9));
n = parseInt(meli_code.charAt(0))*10 +
parseInt(meli_code.charAt(1))*9 +
parseInt(meli_code.charAt(2))*8 +
parseInt(meli_code.charAt(3))*7 +
parseInt(meli_code.charAt(4))*6 +
parseInt(meli_code.charAt(5))*5 +
parseInt(meli_code.charAt(6))*4 +
parseInt(meli_code.charAt(7))*3 +
parseInt(meli_code.charAt(8))*2;
r = n - parseInt(n/11)*11;
if ((r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r))
{
return true;
}
else
{
alert(”کد ملی صحیح نمی باشد”);
objcode.focus();
return true;
}
}
else
{
return true;
}
مشکل کد اینجاست
r=n -parseInt(n/11)*11
خوب هر عددی جای N بزاری که R برابر 0 میشه
کسی درست شده این کد رو نداره . این کد فرمول بدست آوردن صحت کد ملی است که تویه همین سایت هم به صورت مشکل دارش وجود داره . من Dll یا OCX اونو نمیخوام فقط کد اون رو لطف کنین ممنون میشم.
نقل قول: کمک - بدست آوردن کد ملی توسط فرمول
سلام٬ اشتباه میکنی٬ وقتی به تابع ParseInt داده میشه٬ به عدد صحیح تبدیل میشه و اعشارش از بین میره
در واقع این روش یک روش ساده برای بدست آوردن باقیمانده است.
موفق باشی
نقل قول: کمک - بدست آوردن کد ملی توسط فرمول
کد زیر را برای تشخیص صحت کد ملی به صورت vb نوشتم که مشکلات مد نظر شما در آن رفع شده است
Public Function Check_Code_meli(S As String)
Dim meli_code, C, N, R As Long
If (Len(S) = 10) Then
If (S = "1111111111" Or S = 0 Or S = "222222222" Or S = "3333333333" Or S = "4444444444" & _
S = "5555555555" Or S = "6666666666" Or S = "7777777777" Or S = "8888888888" Or S = "9999999999") Then
MsgBox "It's Wrong", vbCritical, "Error"
Check_Code_meli = False
Else
C = Val(Right((S), 1))
N = (Val(Left((S), 1)) * 10) + (Val(Mid((S), 2, 1)) * 9) + (Val(Mid((S), 3, 1)) * 8) + (Val(Mid((S), 4, 1)) * 7) + (Val(Mid((S), 5, 1)) * 6) + (Val(Mid((S), 6, 1)) * 5) + (Val(Mid((S), 7, 1)) * 4) + (Val(Mid((S), 8, 1)) * 3) + (Val(Mid((S), 9, 1)) * 2)
R = N - Fix(N / 11) * 11
If ((R = 0 And R = C) Or (R = 1 And C = 1) Or (R > 1 And C = 11 - R)) Then
Check_Code_meli = True
Else
MsgBox " It's Wrong ", vbCritical, "Error"
Check_Code_meli = False
End If
End If
Else
MsgBox "It's not 10 digit", vbCritical, "Error"
Check_Code_meli = False
End If
End Function