以文本方式查看主题 - 易表在线答疑 (http://egrid2000.com/dvbbs/index.asp) -- 用户社区 (http://egrid2000.com/dvbbs/list.asp?boardid=2) ---- 如何控制身份证号字段录入? (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=2809) |
-- 作者:sjbssd -- 发布时间:2011/2/19 11:47:00 -- 如何控制身份证号字段录入? 要求: 1、长度控制:只能是15或18位; 2、15位的第7至12位、18位第9位至14位年月日必须正确。 总之必须符合规定。 |
-- 作者:wjq1072 -- 发布时间:2011/2/19 13:04:00 -- 发示例文件上来 |
-- 作者:wjq1072 -- 发布时间:2011/2/19 13:35:00 -- 下面引用由sjbssd在 2011/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列刷新公式: 设置k列操作公式: |
-- 作者:sjbssd -- 发布时间:2011/2/21 23:48:00 -- 谢谢!!! |
-- 作者:wjq1072 -- 发布时间: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 -- 发布时间: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 -- 发布时间:2011/2/24 9:15:00 -- 用5楼公式试试? |