分享_身份证号码尾号验证脚本分享【官方默认弹出提示,脚本计算出正确的尾号】_使用经验
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 5  1/1   1  
作者
内容
fwj3861  [个人空间]
QQ名  越南-叶子(121305301)


注册  2010-09-09
发贴数  552
精华贴  10
原创贴  20
来自  越南
状态  正常

级别  贵宾
#1»发布于2023-08-03 20:24

身份证号码的尾号是根据【ISO 7064:1983.MOD 11-2校验码计算公式】计算得来的 
官方有自动检查身份证号码是否正确,使用脚本检测后再弹出正确的身份证号码尾号并清空已输入的身份证号码,设置身份证号码为必填项,这样就避免输入错误的身份证号码之后也能保存的弊端 
 
在【员工卡片编辑辅助脚本定义】添加脚本调用 
int obj_change() 

 if(change_obj ==  "Edit_Paper_Id") 
 { 
  #include 身份证有效性校验 
  }; 
  //msg('obj change'); 
  //change_obj 
  return 1; 
}; 
 
把下列脚本复制到新建脚本文件【身份证有效性校验】或下载附件 
 
int main() 

  dbg_clear() 
  int i,j,count; 
  string paperid,ida,idxs,idb,idjs,xym,sfzws,id18; 
  num id,ida,idb,ids,idjs; 
  paperid = gui_get_val("Edit_Paper_Id"); 
  if(strlen(paperid) == 18) 
 { 
  id18 =  str_get_sub(paperid,17,1) 
  str_lst_to_db('7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2') 
  count = db_row_count() 
   for(i=0;i<count;i++); 
   { 
    db_go_row(i) 
    idb = db_res(0); 
    ida=str_get_sub(str_get_sub(paperid,i,1),0,1) 
    idjs = ida*idb 
    db_add_field('校验系数') 
    db_add_field('身份证号码分解') 
    db_add_field('校验结果') 
    db_set_value_ext('校验系数',idb) 
    db_set_value_ext('身份证号码分解',ida) 
    db_set_value_ext('校验结果',idjs) 
    db_set_field_sum_flag('校验结果') 
    }; 
    ids = db_get_sum('校验结果') 
    str_lst_to_db(str_replace(ids/11,".",",")) 
    db_go_head(); 
    idjs = ids - db_res(0)*11 
    str_lst_to_db('1,0,X,9,8,7,6,5,4,3,2') 
    count = db_row_count() 
    for(j=0;j<count;j++); 
    { 
     db_go_row(j) 
     db_add_field('尾数') 
     db_set_value_ext('尾数',j) 
     xym = db_res_ext('尾数') 
     db_add_field('校验码') 
     db_set_value_ext('校验码',db_res(0)) 
     if(idjs == xym) 
     { 
      sfzws =  db_cell('校验码',j) 
      }; 
    }; 
   if(sfzws != id18) 
   { 
    msg('身份证号码有效性验证未通过!当前输入的身份证尾号【'+id18+'】正确的尾号【'+sfzws+'】请重新输入身份证号码!') 
    gui_set_val("Edit_Paper_Id",'') 
    gui_focus("Edit_Paper_Id",'') 
    return 0; 
    }; 
 }; 
return1; 
}




        于 2023-08-03 20:24 被 fwj3861 修改




官方认证第三方服务团队 (越南-叶子) QQ:121305301 TEL:+84869350626
承接越南北部-河内周边省份-OIT部署和维护服务(24小时上门或远程服务)
服务介绍:http://www.onlyit.cn/onlyit_service.html

fwj3861  [个人空间]
QQ名  越南-叶子(121305301)


注册  2010-09-09
发贴数  552
精华贴  10
原创贴  20
来自  越南
状态  正常

级别  贵宾
#2»发布于2023-08-03 20:25

附【身份证有效性校验】脚本文件


附件(登录后才可下载):2308032025_20.csp  说明: 原文件:身份证有效性校验.csp   大小:2794 Byte





官方认证第三方服务团队 (越南-叶子) QQ:121305301 TEL:+84869350626
承接越南北部-河内周边省份-OIT部署和维护服务(24小时上门或远程服务)
服务介绍:http://www.onlyit.cn/onlyit_service.html

fwj3861  [个人空间]
QQ名  越南-叶子(121305301)


注册  2010-09-09
发贴数  552
精华贴  10
原创贴  20
来自  越南
状态  正常

级别  贵宾
#3»发布于2023-08-04 11:35

补充【身份证号码不等于18位数】的检测脚本 
int main() 

  dbg_clear() 
  int i,j,count; 
  string paperid,ida,idb,idjs,xym,sfzws,id18; 
  num ida,idb,ids,idjs; 
  paperid = gui_get_val("Edit_Paper_Id"); 
  if(strlen(paperid) == 18) 
 { 
  id18 =  str_get_sub(paperid,17,1) 
  str_lst_to_db('7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2') 
  count = db_row_count() 
   for(i=0;i<count;i++); 
   { 
    db_go_row(i) 
    idb = db_res(0); 
    ida=str_get_sub(str_get_sub(paperid,i,1),0,1) 
    idjs = ida*idb 
    db_add_field('校验系数') 
    db_add_field('身份证号码分解') 
    db_add_field('校验结果') 
    db_set_value_ext('校验系数',idb) 
    db_set_value_ext('身份证号码分解',ida) 
    db_set_value_ext('校验结果',idjs) 
    db_set_field_sum_flag('校验结果') 
    }; 
    ids = db_get_sum('校验结果') 
    str_lst_to_db(str_replace(ids/11,".",",")) 
    db_go_head(); 
    idjs = ids - db_res(0)*11 
    str_lst_to_db('1,0,X,9,8,7,6,5,4,3,2') 
    count = db_row_count() 
    for(j=0;j<count;j++); 
    { 
     db_go_row(j) 
     db_add_field('尾数') 
     db_set_value_ext('尾数',j) 
     xym = db_res_ext('尾数') 
     db_add_field('校验码') 
     db_set_value_ext('校验码',db_res(0)) 
     if(idjs == xym) 
     { 
      sfzws =  db_cell('校验码',j) 
      }; 
    }; 
   if(sfzws != id18) 
   { 
    msg('身份证号码有效性验证未通过!当前输入的身份证尾号【'+id18+'】正确的尾号【'+sfzws+'】请重新输入身份证号码!') 
    gui_set_val("Edit_Paper_Id",'') 
    gui_focus("Edit_Paper_Id") 
    return 0; 
    }; 
  }; 
  //身份证号码小余18位数检测 
  if(gui_get_focus_obj() != "Edit_Paper_Id" && strlen(paperid) < 18) 
  { 
   msg('请输入完整的18位数身份证号码,目前已输入【'+strlen(paperid)+'】位') 
   gui_set_val("Edit_Paper_Id",'') 
   gui_focus("Edit_Paper_Id") 
   }; 
  //身份证号码大余18位数检测 
  if(gui_get_focus_obj() != "Edit_Paper_Id" && strlen(paperid) > 18) 
  { 
   msg('请输入18位数身份证号码,目前已输入【'+strlen(paperid)+'】位') 
   gui_set_val("Edit_Paper_Id",'') 
   gui_focus("Edit_Paper_Id") 
   }; 
return 1; 
}


附件(登录后才可下载):2308041135_29.csp  说明: 原文件:身份证有效性校验.csp   大小:3632 Byte

        于 2023-08-04 11:35 被 fwj3861 修改




官方认证第三方服务团队 (越南-叶子) QQ:121305301 TEL:+84869350626
承接越南北部-河内周边省份-OIT部署和维护服务(24小时上门或远程服务)
服务介绍:http://www.onlyit.cn/onlyit_service.html

福建-卓文军  [个人空间]


注册  2022-11-12
发贴数  103
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#4»发布于2023-08-06 12:35

试了两个版本, 
最新的2023-08-02版本报错,(脚本错误,错误信息:obj_change(line num 3): parameter change_obj not defined 参数没有定义 ((change_obj == _t_1)),行号:3 
) 
随意下载了个2022-10-20版本没有问题,正常运行



        于 2023-08-06 12:35 被 福建-卓文军 修改




http://www.myoit.cn/soft_onlyit?iuid=40855
因为有你。所以世界才更加美好
Because of you. That's why the world is better.

qf2016  [个人空间]
QQ名  meng 113779009


注册  2016-01-17
发贴数  2551
精华数  0
原创贴  0
来自  
状态  正常

级别  版主
#5»发布于2023-08-06 15:20

最开头加一句 extern change_obj ; 
不过后面版本会自动处理。





 5  1/1   1  

登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 杭州 - 浙ICP备19051128号-1 网安 33010402003225 ]