Foxtable(狐表)用户栏目专家坐堂 → [求助如何校验登记时的年龄的准确性?(已解决)


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

主题:[求助如何校验登记时的年龄的准确性?(已解决)

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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
[求助如何校验登记时的年龄的准确性?(已解决)  发帖心情 Post By:2011/8/6 15:39:00 [只看该作者]

资料输入时,部分人是有身份证.部分人是没有身份证的. 如果有身份证号码的话.在输入登记日期时校验一下.登记时年龄的准确性.可以的话也最好校验下性别的准确性. 谢谢.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:校验登记时年龄.table

[此贴子已经被作者于2011-8-7 15:50:43编辑过]

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


加好友 发短信
等级:婴狐 帖子:8 积分:129 威望:0 精华:0 注册:2011/7/29 23:36:00
  发帖心情 Post By:2011/8/6 17:57:00 [只看该作者]

http://www.foxtable.net/help/topics/1587.htm

看看这个帮助,应该对你有用

[此贴子已经被作者于2011-8-6 17:56:52编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
年龄会算.(项目里有公式)  发帖心情 Post By:2011/8/6 19:42:00 [只看该作者]

只是校验部分不会做. 请高手指点.
[此贴子已经被作者于2011-8-6 23:07:18编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/8/6 23:33:00 [只看该作者]

年龄:e.DataRow("登记时年龄") = e.DataRow("登记日期").Year - e.DataRow("出生日期").Year 用不着再效验了;

性别:e.DataRow("性别") = ReadSex(e.DataRow("身份证号码"))   也用不着再效验···


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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
回复:(mr725)年龄:e.DataRow("登记时年龄") = e.D...  发帖心情 Post By:2011/8/7 0:17:00 [只看该作者]

上面的年龄比较只是年份比较,我要求是精确到日的。比如:生日是2010年5月1日 要到2011年5月1日才是1岁。2011年4月1日还是0岁11个月。 一楼说明了。有些资料是没身份证号码的(就不能生成“出生日期”)。如果用公式将身份证号码的内容转为年龄和性别,没号码的年龄,性别资料会出错的。 在输入资料时,做个校验,防止出错。
[此贴子已经被作者于2011-8-7 0:26:04编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/7 7:51:00 [只看该作者]

DataColChanging使用刚刚输入的值,必须使用e.NewValue表示,如果使用e.DataRow("列名"),是输入前的值,就是旧值。

 

正确代码:

 

If e.DataCol.Name = "身份证号码" Then
        If e.NewValue IsNot Nothing Then
            Dim d As Date = ReadBirthDay(e.NewValue)
            Dim s As String = ReadSex(e.NewValue)
            If s = "" OrElse d < #1/1/1900# Then
                e.Cancel = True '取消输入
                MessageBox.Show("身份证无效输入")
            End If
        End If
End If
If e.DataCol.Name = "登记日期" Then
    If e.DataRow.IsNull("出生日期") = True OrElse e.NewValue Is Nothing Then
        Return
    Else
        Dim n As Integer = e.NewValue.Year - e.DataRow("出生日期").Year
        If e.DataRow("出生日期").AddMonths(n*12) > e.NewValue Then
            n = n -1
        End If
        If e.DataRow("登记时年龄") <> n Then
            e.Cancel = True
            MessageBox.Show("年龄与身份证不符!")
        End If
    End If
End If

 

建议仔细看看这两个事件的差别:

http://www.foxtable.net/help/topics/0624.htm

http://www.foxtable.net/help/topics/0625.htm

 


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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
谢谢狐爸的帮助.完美解决.  发帖心情 Post By:2011/8/7 15:50:00 [只看该作者]

谢谢狐爸的帮助.完美解决.

 回到顶部