| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3018 人关注过本帖, 1 人收藏
标题:救助:如何对一个表中的身份证号进行判断。把错误的给导出来?
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 29楼 lygcw9603
是的,我就看中個校驗辦法,以前不知道有這個東西。

授人以渔,不授人以鱼。
2012-01-24 02:15
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
回复 30楼 TonyDeng
刚才我查了下最新行政区划代码,原居住区被其它区合并后,原行政区划代码也不存在了。这就说明一个问题,身份证跟着也变了。
2012-01-24 02:20
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
回复 31楼 TonyDeng
写身份证校验码前,也就是前几天在别的论坛有人提到关于集装箱代码校验码验证问题,帮助解决后,看到有人写了个身份证校验码验证,看着不习惯,按照前面的思路,就写了个身份证号码校验码验证的代码。
2012-01-24 02:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
理論上是變的,只是現在身份證20年一換,某些人甚至終身不用換,跟不上真實變化的。不在這個行業做,還真難想像這種東西的效用能到什麼程度,寫在文件上忽悠人的居多,中國專整這一套。以前毛澤東時代,人口的流動性極低,可以用這種辦法,但後來已經放開人口流動了,再沿襲這個方案,應該不行的。

授人以渔,不授人以鱼。
2012-01-24 02:25
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
今天晚上你值班吗
2012-01-24 02:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我西半球時間幹活,不值班,遇到有用的話題多聊了一會,呵呵。

授人以渔,不授人以鱼。
2012-01-24 02:40
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
回复 36楼 TonyDeng
我要下了,有时间再聊,
2012-01-24 02:53
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11773
专家分:43421
注 册:2006-5-13
收藏
得分:0 
1、身份证号码是不会改变的,即使行政区划变动或发证机关变动,原身份证号码是不会变动(15位变18位除外)。
2、15位号码转18位比较容易,通常只要在原第6位之后加“19”,在最后加校验码。因为1901年之前出生的老人在世的极少了,2000年之后出生的人申领的号码都是18位。
3、行政区划代码校验是比较困难的,因为我们很难同步跟踪全国的行政区划变动情况,除非你能与相关的系统联网直接获取信息,将新区划的代码添加到你的数据库中。

身份证15位转18位可用下面的代码,变通一下也可以作为检查号码是否符合规则要求。

PARAMETERS cSFZ15
cSFZ15 = ALLTRIM(cSFZ15)
IF LEN(cSFZ15)<>15 AND LENC(cSFZ15)<>15
    RETURN "不是15位身位证号码!"
ENDIF
    IF NOT CHRTRAN(cSFZ15,"1234567890","")==""
        RETURN "含有非数字,不是身位证号码!"
    ENDIF
    cSFZ17 = STUFF(cSFZ15,7,0,'19')
    cBy17='7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2'
    cCheck='10X98765432'
    nCheck=0
    FOR nCnt=1 TO 17
        nCheck=nCheck+VAL(SUBSTR(cSFZ17,nCnt,1))*VAL(GETWORDNUM(cBy17,nCnt,','))
    NEXT
    RETURN cSFZ17+SUBSTR(cCheck,nCheck%11+1,1)
ENDIF


活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-01-24 09:44
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
纯粹瞎胡闹。只能校验身份证的编码是否符合规则。一个人的身份证号码一旦确定,不会因居住地变化、行政区划变化等原因而改变

[ 本帖最后由 ibmlang_002 于 2012-1-30 09:24 编辑 ]

VFP
2012-01-30 09:23
hgzgrg
Rank: 1
等 级:新手上路
威 望:1
帖 子:13
专家分:3
注 册:2013-12-17
收藏
得分:0 
学习
2016-12-22 15:31
快速回复:救助:如何对一个表中的身份证号进行判断。把错误的给导出来?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016341 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved