以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  工龄计算错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130028)

--  作者:edisontsui
--  发布时间:2019/1/11 13:22:00
--  工龄计算错误
If e.DataCol.name ="入职日期"
        If e.DataRow.IsNull("入职日期") Then
            e.DataRow("工龄年") = Nothing
            e.DataRow("工龄月") = Nothing
            e.DataRow("工龄日") = Nothing
        Else
            Dim y,m,d As Integer
            DateYMD(e.DataRow("入职日期"),Date.Today,y,m,d)
            e.DataRow("工龄年") = y
            e.DataRow("工龄月") = m
            e.DataRow("工龄日") = d
        End If
End If

上面的代码,如果我今天输入某人的入职日期为2019年2月13日,那么,其工龄年、月、日分别显示0、1、2。这是错误的。应该是0、-1、-2才对。要怎么修改代码呢?谢谢。

--  作者:有点甜
--  发布时间:2019/1/11 15:17:00
--  

 

[此贴子已经被作者于2019/1/11 15:17:24编辑过]

--  作者:有点甜
--  发布时间:2019/1/11 15:19:00
--  
Dim y,m,d As Integer
Dim dt1 As Date = "2019年1月1日"
Dim dt2 As Date = Date.Today
DateYMD(dt1,dt2,y,m,d)
If dt1 > dt2 Then
    msgbox(y & "年" & m & "月" & d & "日")
Else
    msgbox(-y & "年" & -m & "月" & -d & "日")
End If

--  作者:edisontsui
--  发布时间:2019/1/11 16:05:00
--  
If e.DataCol.name ="入职日期"
        If e.DataRow.IsNull("入职日期") Then
            e.DataRow("工龄年") = Nothing
            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(dt1,dt2,y,m,d)
            If dt1 > dt2 Then
                e.DataRow("工龄年") = -y
                e.DataRow("工龄月") = -m
                e.DataRow("工龄日") = -d
            else
                e.DataRow("工龄年") = y
                e.DataRow("工龄月") = m
                e.DataRow("工龄日") = d
            end if
        End If
End If

我写成上面那样了。也有小。

--  作者:有点色
--  发布时间:2019/1/11 16:09:00
--  
            If dt1 < dt2 Then
                e.DataRow("工龄年") = -y
                e.DataRow("工龄月") = -m
                e.DataRow("工龄日") = -d
            else
                e.DataRow("工龄年") = y
                e.DataRow("工龄月") = m
                e.DataRow("工龄日") = d
            end if