以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]DataColChanged代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119732)

--  作者:老鼠
--  发布时间:2018/5/30 22:07:00
--  [求助]DataColChanged代码?

计算[预计退休日期]列结果.条件1、性别=男,身份类别=工人,预计退休日期=出生日期+60年(也就是60周岁);条件2、性别=男,身份类别=干部,预计退休日期=出生日期+60年(也就是60周岁);条件3、性别=女,身份类别=工人,预计退休日期=出生日期+50年(也就是50周岁);条件4、性别=女,身份类别=干部,预计退休日期=出生日期+55年(也就是55周岁)。而且前面的性别、身份类别、出生日期只要有一项有变动或者修改预计退休日期列就会重新计算结果。这个代码应该如何编辑?请老师们指点。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:有点甜
--  发布时间:2018/5/30 22:13:00
--  
Select Case e.DataCol.name
    Case "性别","身份类别","出生日期"
        Dim d As Date = e.DataRow("出生日期")
        If d = Nothing Then
            e.DataRow("预计退休日期") = Nothing
        Else
            If e.DataRow("性别") = "男" Then
                e.DataRow("预计退休日期") = d.AddYears(60)
            ElseIf e.DataRow("性别") = "女" Then
                If e.DataRow("身份类别") = "工人"
                    e.DataRow("预计退休日期") = d.AddYears(50)
                Else
                    e.DataRow("预计退休日期") = d.AddYears(55)
                End If
            Else
                e.DataRow("预计退休日期") = Nothing
            End If
        End If
End Select

--  作者:老鼠
--  发布时间:2018/5/30 23:02:00
--  

感谢有点甜老师的帮助!

 

如果我要同时计算:预计退休日期,工龄,党龄,

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

这里我又加了几个列,以下是单独党龄计算的代码。

Select Case e.DataCol.name
    Case "入党日期"
        If e.DataRow.IsNull("入党日期") Then
            e.DataRow("党龄") = Nothing
        Else
            Dim y,m,d As Integer
            DateYMD(cdate(e.DataRow("入党日期")),Date.Today,y,m,d)
            e.DataRow("党龄") = format(y, "00") & "年" & format(m, "00") & "月"
        End If
End Select

如果有多个列,这样的应该如何合并代码呢?


--  作者:有点甜
--  发布时间:2018/5/30 23:04:00
--  

不需要合并代码,每个计算单独写。


--  作者:老鼠
--  发布时间:2018/5/30 23:11:00
--  
好的,谢谢!