Foxtable(狐表)用户栏目专家坐堂 → [求助]在职时间和在职月数计算[已解决]


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

主题:[求助]在职时间和在职月数计算[已解决]

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
[求助]在职时间和在职月数计算[已解决]  发帖心情 Post By:2013/5/28 10:49:00 [只看该作者]

[求助]在职时间和在职月数计算[已解决]
现在用以下代码可以正确计算在职员工的,在职在职时间和在职月数。大家帮忙看看以下满足需求,需要怎么来修改代码,谢谢!
现在需要改成:
1.如果员工状态为在职,【今天日期】减去【入职日期】
2.如果员工状态为离职,【离职日期】减去【入职日期】

Select Case e. DataCol .name
    Case "入职日期"
        If e .DataRow . IsNull( "入职日期" ) Then
             e .DataRow ( "在职时间" ) = Nothing
             e .DataRow ( "在职月数" ) = Nothing
        Else
            Dim y,m,d As Integer
            Dim dt1 As Date  = e .DataRow ( "入职日期" )
            Dim dt2 As Date = Date .Today ()
            DateYMD(e.DataRow("入职日期"),Date.Today,y,m,d) 
            e.DataRow("在职时间") = y & "年" & m & "月" & d & "日"
            e .DataRow ( "在职月数" ) = ( dt2 . Year - dt1 . Year ) * 12 + dt2 . Month - dt1 . Month
        End If
End Select


[此贴子已经被作者于2013-5-28 12:41:58编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/28 10:57:00 [只看该作者]

Select Case e. DataCol .name
    Case "入职日期"
    Select Case e. DataRow("员工状态")
    case "在职"
        If e .DataRow . IsNull( "入职日期" ) Then
             e .DataRow ( "在职时间" ) = Nothing
             e .DataRow ( "在职月数" ) = Nothing
        Else
            Dim y,m,d As Integer
            Dim dt1 As Date  = e .DataRow ( "入职日期" )
            Dim dt2 As Date = Date .Today ()
            DateYMD(e.DataRow("入职日期"),Date.Today,y,m,d) 
            e.DataRow("在职时间") = y & "年" & m & "月" & d & "日"
            e .DataRow ( "在职月数" ) = ( dt2 . Year - dt1 . Year ) * 12 + dt2 . Month - dt1 . Month
        End If
   case "离职"
    If e .DataRow . IsNull( "入职日期" ) Then
             e .DataRow ( "在职时间" ) = Nothing
             e .DataRow ( "在职月数" ) = Nothing
        Else
            Dim y,m,d As Integer
            Dim dt1 As Date  = e .DataRow ( "入职日期" )
            Dim dt2 As Date = Date .Today ()
            这部分就不用我写了吧?
        End If
End Select
End Select


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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/5/28 12:41:00 [只看该作者]

Select Case e. DataCol .name
    Case "入职日期"
    Select Case e. DataRow("员工状态")
    Case "在职"
        If e .DataRow . IsNull( "入职日期" ) Then
             e .DataRow ( "在职时间" ) = Nothing
             e .DataRow ( "在职月数" ) = Nothing
        Else
            Dim y,m,d As Integer
            Dim dt1 As Date  = e .DataRow ( "入职日期" )
            Dim dt2 As Date = Date .Today ()
            DateYMD(e.DataRow("入职日期"),Date.Today,y,m,d) 
            e.DataRow("在职时间") = y & "年" & m & "月" & d & "日"
            e .DataRow ( "在职月数" ) = ( dt2 . Year - dt1 . Year ) * 12 + dt2 . Month - dt1 . Month
        End If
   Case "离职"
    If e .DataRow . IsNull( "入职日期" ) Then
             e .DataRow ( "在职时间" ) = Nothing
             e .DataRow ( "在职月数" ) = Nothing
        Else
            Dim y,m,d As Integer
            Dim dt1 As Date = e .DataRow ( "入职日期" )
            Dim dt2 As Date = e .DataRow ( "离职日期" )
            DateYMD(e.DataRow("入职日期"),e.DataRow("离职日期"),y,m,d) 
            e.DataRow("在职时间") = y & "年" & m & "月" & d & "日"
            e .DataRow ( "在职月数" ) = ( dt2 . Year - dt1 . Year ) * 12 + dt2 . Month - dt1 . Month
        End If
End Select
End Select


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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/5/28 12:42:00 [只看该作者]

谢谢 Bin 帮忙,已解决!

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/28 12:48:00 [只看该作者]

 定義了又不用,豈非只封官,不給權嗎:

 Dim dt1 As Date = e .DataRow ( "入职日期" )
 Dim dt2 As Date = e .DataRow ( "离职日期" )
 DateYMD(e.DataRow("入职日期"),e.DataRow("离职日期"),y,m,d)   ======>  DateYMD(dt1,dt2,y,m,d) 

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/28 13:06:00 [只看该作者]

簡化下吧:

Select Case e.DataCol.name
    Case "入职日期"
        Dim y,m,d As Integer
        Dim dt1,dt2 As Date
        Dim dr1 As DataRow = e.DataRow
        If dr1.IsNull("入职日期") Then
            dr1("在职时间") = Nothing
            dr1("在职月数") = Nothing
        Else  
            Select Case dr1("员工状态")
                Case "在职","离职"
                    dt1 = dr1("入职日期")
                    dt2 = iif(dr1("员工状态")= "在职",Date.Today(),dr1("离职日期"))
                    DateYMD(dt1,dt2,y,m,d)
                    dr1("在职时间") = y & "年" & m & "月" & d & "日"
                    dr1("在职月数") = y*12 + m
            End Select
        End If 
End Select

[此贴子已经被作者于2013-5-28 13:12:06编辑过]

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2013/5/28 13:47:00 [只看该作者]

谢谢 don 精简代码。

 回到顶部