`
- 浏览:
5952734 次
- 性别:
- 来自:
上海
-
身份证号码校验(gf_check_identity)
可以同时对15位和18位的身份证进行校验,并自动根据平年和润年进行判断。可以在数据窗口ItemChanged事件中调用该函数进行校验。
/*-------------------------------------------------------------------------------
* 函数名称:Boolean gf_check_identity(string as_identity)
* 函数功能: 验证身份证号输入的正确性
* 参数说明: string as_identity 身份证号
* 返 回 值: True 成功
* False 失败
* 调用举例: gf_check_identity('410101650101101')
* 尚未完善:没有对身份证号码的第18位校验位进行判断。因为我暂时没有找到第18位
* 的校验算法,等找到了我再加上。应该比较简单。
*--------------------------------------------------------------------------------*/
string ls_identity_no
string ls_year,ls_month,ls_day,ls_date
string ls_today
long ll_year
long ll_identity_no_len
ls_identity_no = as_identity
ls_today = string(today(),'yyyy/mm/dd')
ll_identity_no_len=LEN(ls_identity_no)
if ls_identity_no = '' then
MessageBox("系统提示","身份证号码不能为空!!",StopSign!,ok!)
return False
elseif ll_identity_no_len <> 15 AND ll_identity_no_len <> 18 then
MessageBox("系统提示","身份证号码位数不足,请检查输入情况!!",StopSign!,ok!)
return False
end if
if ll_identity_no_len = 15 then //身份证为 15 处理, 认为15位的年 = 19**
ls_year = mid(ls_identity_no, 7, 2)
ls_month = mid(ls_identity_no, 9, 2)
ls_day = mid(ls_identity_no, 11, 2)
ls_year = '19' + ls_year//year is only 20 century
ls_date = ls_year +'/' + ls_month +'/' + ls_day
else
ls_year = mid(ls_identity_no, 7, 4)
if Left(ls_year,2) <> '19' and left(ls_year,2) <> '20' then
MessageBox("系统提示","身份证号码中的出生年份不正确, 请您重新输入! ",StopSign!,ok!)
return False
end if
ls_month = mid(ls_identity_no, 11, 2)
ls_day = mid(ls_identity_no, 13, 2)
ls_date = ls_year +'/' + ls_month +'/' + ls_day
end if
if ls_month > '12' then
MessageBox("系统提示","身份证号码中的出生月份大于12, 请您重新输入 ",StopSign!,ok!)
return False
elseif ls_month < '1' then
MessageBox("系统提示","身份证号码中的出生月份小于01, 请您重新输入 ",StopSign!,ok!)
return False
end if
if ls_day < '01' then
MessageBox("系统提示","身份证号码的出生日小于01, 请您重新输入 !",StopSign!,ok!)
return False
end if
CHOOSE CASE ls_month
CASE '01','03','05','07','08','10','12'//大月的处理
if ls_day > '31' then
MessageBox("系统提示","身份证号码的出生日大于31, 请您重新输入 !",StopSign!,ok!)
return False
end if
CASE '04','06','05','09','11' //小月的处理
if ls_day > '30' then
MessageBox("系统提示","身份证号码的出生日大于30, 请您重新输入 !",StopSign!,ok!)
return False
end if
CASE '02' //平年和闰年的处理
ll_year = long(ls_year)
if (mod(ll_year,4) = 0 and Mod(ll_year,100)<>0) or (Mod(ll_year,400) = 0) then //闰年,二月份不能多于29天
if ls_day > '29' then
MessageBox("系统提示","闰年的二月份没有" + ls_day + "日,请重新输入出生日期!",StopSign!,ok!)
return False
end if
else//平年二月份不能大于28天
if ls_day > '28' then
MessageBox("系统提示","平年的二月份没有" + ls_day + "日,请重新输入出生日期!",StopSign!,ok!)
return False
end if
end if
END CHOOSE
if ls_date > ls_today then
MessageBox("系统提示","身份证号码的出生日期小于登记日期,不合理请您重新输入 !",StopSign!,ok!)
return False
end if
return True
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
pb验证身份证号输入的正确性(可以对身份证号码的第18位校验位进行判断) 源码 pb验证身份证号输入的正确性(可以对身份证号码的第18位校验位进行判断) 源码 pb验证身份证号输入的正确性(可以对身份证号码的第18位...
用PB代码实现的身份证号码校验。主要由两个函数构成,在PB程序中导入对应的SRF文件就可以调用了!
PB开发的CRC16校验源码,CRC16广泛用于工业控制通讯的数据校验。
PB验证身份证号合法性
pb的身份证读卡器代码,测试说明,我觉得很有用
pb9身份证读卡实例,有环境可以直接运行,包含源代码,适用于新中新身份证读卡器a16d,可以读取身份证信息和头像
pb生成条形码,可以方便的生成条形码,进行打印
PB调用C++写的dll(校验身份证dll里有具体错误提示).rar
PowerBuilder9的源码,输入字符串,返回校验BCC位。希望对大家有用。
可以对输入的身份证进行验证,包括身份证的长度,日期,闰月等,以及验证码的验证
PB日期转换 PB格式转换 日期、时间函数 打印函数
1.数字、字母、汉字结合的文字校验码 2.拖拉式图片校验码
下面为PB用于CRC16校验的方法,个人整理,如有雷同纯属巧合。 创建一个结构体,用于存储CRC字典列表数据 定义一个全局变量,用于使结构体使用方便 创建一个字符串以某一字符分隔后存入结构体的函数方法, 创建一个求...
PB 语言编写的基于MODBUS协议的CRC16校验算法,已验证结果正确。属于程序代码,有问题可以联系QQ:441965142
pb 中使用读卡机的例子,使用PB9开发设计的,调用动态连接库文件
PB CRC校验码的使用,可用于软件EXE文件加密防破解,不错的东东。
二代身份证读卡器PB9二次开发demo,采用USB接口方式输出
纯PB代码编制的MD5生成程序 PB11.5下调试通过
研腾yt-100身份证读卡器pb开发demo 最新dll2020年
pb 使用正则表达式源码pbregexp pb中使用正则表达式组件,通过该组件可以在pb脚本中使用功能强大的正则表达式