Foxtable(狐表)用户栏目专家坐堂 → 如何使代码执行


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

主题:如何使代码执行

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


加好友 发短信
等级:一尾狐 帖子:401 积分:3633 威望:0 精华:0 注册:2016/11/12 18:42:00
如何使代码执行  发帖心情 Post By:2018/11/22 11:51:00 [只看该作者]

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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/22 11:56:00 [只看该作者]

重置列即可,参考

 

http://www.foxtable.com/webhelp/scr/1587.htm

 


 回到顶部