易表在线答疑技术与交流用户社区 → 如何控制身份证号字段录入?


  共有6409人关注过本帖树形打印复制链接

主题:如何控制身份证号字段录入?

帅哥哟,离线,有人找我吗?
sjbssd
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2011/1/14 21:07:00
如何控制身份证号字段录入?  发帖心情 Post By:2011/2/19 11:47:00 [只看该作者]

要求:
1、长度控制:只能是15或18位;
2、15位的第7至12位、18位第9位至14位年月日必须正确。
总之必须符合规定。

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2011/2/19 13:04:00 [只看该作者]

发示例文件上来

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2011/2/19 13:35:00 [只看该作者]

下面引用由sjbssd2011/02/19 11:47am 发表的内容:
要求:
1、长度控制:只能是15或18位;
2、15位的第7至12位、18位第9位至14位年月日必须正确。
总之必须符合规定。

1、设置身份证列操作公式:
If([身份证]="" Or Len([身份证])=15 Or Len([身份证])=18,"",MsgBox("号码错误!",0) And SetCellText(Grid,Row,"身份证",""))

2、增加一时间型辅助列k:

设置k列刷新公式:
If([身份证]="","",If(Len([身份证])=15,"19"+Mid([身份证],6,2)+"-"+Mid([身份证],8,2)+"-"+Mid([身份证],10,2),Mid([身份证],6,4)+"-"+Mid([身份证],10,2)+"-"+Mid([身份证],12,2)))

设置k列操作公式:
If(ISDATE([k])=TRUE Or Text([k])="","",MsgBox("日期错误!",0) And SetCellText(Grid,Row,"身份证","") And SetCellText(Grid,Row,"k",""))


 回到顶部
帅哥哟,离线,有人找我吗?
sjbssd
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2011/1/14 21:07:00
  发帖心情 Post By:2011/2/21 23:48:00 [只看该作者]

谢谢!!!

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2011/2/22 14:22:00 [只看该作者]

[这个贴子最后由wjq1072在 2011/02/24 09:15am 第 1 次编辑]

不增加辅助列,直接设置身份证列操作公式试试?
If([身份证]="","",If(Len([身份证]) <> 15 And Len([身份证]) <> 18,MsgBox("号码错误!",0) And SetCellText(GridName,Row,"身份证",""),If(Len([身份证])=15 And IsDate(Date("19"+Mid([身份证],6,2)+"-"+Mid([身份证],8,2)+"-"+Mid([身份证],10,2)))= True ,"",If(Len([身份证])=18 And IsDate(Date(Mid([身份证],6,4)+"-"+Mid([身份证],10,2)+"-"+Mid([身份证],12,2)))= True ,"",MsgBox("日期错误!",0) And SetCellText(GridName,Row,"身份证","")))))

 回到顶部
帅哥哟,离线,有人找我吗?
sjbssd
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:6 积分:0 威望:0 精华:0 注册:2011/1/14 21:07:00
  发帖心情 Post By:2011/2/23 23:54:00 [只看该作者]

设置k列操作公式:
If(ISDATE([k])=TRUE Or Text([k])="","",MsgBox("日期错误!",0) And SetCellText(Grid,Row,"身份证","") And SetCellText(Grid,Row,"k",""))
有问题,true应改为false测试通过,但ISDATE本身还有问题,我把身份证中月份、日期输成立13、41它也通过。

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2011/2/24 9:15:00 [只看该作者]

用5楼公式试试?

 回到顶部