If e.DataCol.name = "学籍号" AndAlso e.DataRow("学籍号").length > 18 Then
e.DataRow("身份证号码") = e.DataRow("学籍号").substring(1, 18)
End If
Select Case e.DataCol.name
Case "身份证号码"
If e.DataCol.Name = "身份证号码" Then
If e.DataRow.IsNull("身份证号码") Then
e.DataRow("出生日期") = Nothing
e.DataRow("性别") = Nothing
Else
e.DataRow("出生日期") = ReadBirthDay(e.DataRow("身份证号码"))
e.DataRow("性别") = ReadSex(e.DataRow("身份证号码"))
End If
End If
'----------------------------------------姓名拼音
找到了,谢谢!!!
只有改变数据代码才执行,如何变通让电脑认为数据已经变动?
如果到了明年,需要重新计算年龄列,但是除非你重新输入出生日期,否则上面的代码是不会重算年龄的。
不过我们可以在AfterOpenProject事件中,设置下面的代码:
DataTables("员工").DataCols("出生日期").RaiseDataColChanged()
这样每次重新打开项目,就会强行针对出生日期列触发DataColChanged事件,效果就像你重新输入了出生日期一样 。
执行某列的RaiseDataColChanged方法,等于“欺骗”性地通知系统:这一列(被重置的列)的内容发生了变化;系统收到这个虚假通知后,开始执行DataColChanged事件代码,间接实现了重算的目的。
显然,为了重新计算年龄,只能执行出生日期列的RaiseDataColChanged方法,因为只有出生日期列的内容发生变化,年龄才会被重算。
如果并不需要每次打开项目都重算一次,那么就没有必要将上面的代码设置在AfterOpenProject事件中,可以将代码设置在一个按钮中,需要重算的时候,单击这个按钮即可。
其实我们并不需要编码去完成这样的任务,首先选择出生日期列,然后在“数据表”功能区“列相关”功能组,单击下面的“重置”按钮,即可针对出生日期列触发DataColChanged事件,计算出最新
[此贴子已经被作者于2018/11/22 16:49:34编辑过]