Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:求助,时间计算

1楼
hejfen 发表于:2009/1/28 15:55:00
五个列名:加班类型、加班起时间、加班止时间、合计加班时间、单位,
若选择加班类型为“正常工作日”,则(合计加班时间=加班止时间 - 加班起时间)单位为小时,

若加班类型选择“休息日”,(加班止时间 - 加班起时间)<=2,则(合计加班时间=加班止时间 - 加班起时间)单位为小时,(加班止时间 - 加班起时间)>2且<4,合计加班时间=0.5,单位为天,加班止时间 - 加班起时间)>4,合计加班时间=1,单位为天,

若加班类型选择“法定工作日”,(加班止时间 - 加班起时间)<=4,则合计加班时间=0.5,单位为天,(加班止时间 - 加班起时间)>4,合计加班时间=1,单位为天,

以上条件如何实现?用表达式列实现方便,还是在表属性DataColChanged实现方便?

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

[此贴子已经被czy于2009-1-30 0:50:58编辑过]
2楼
czy 发表于:2009/1/28 16:35:00
如何实现请上传文件,两种方式应该用代码方便。



3楼
czy 发表于:2009/1/29 23:02:00
DataColChanged事件代码:

Dim dc As DataCol = e.DataCol
Dim dr As DataRow = e.DataRow
Dim d1 As  Date = dr("加班止时间")
Dim d2 As  Date = dr("加班起时间")
Dim t As TimeSpan = d1 - d2
If dc.Name = "加班类型" OrElse dc.Name = "加班起时间" OrElse dc.Name = "加班止时间" Then
    if dr.IsNull("加班类型") OrElse dr.IsNull("加班起时间") OrElse dr.IsNull("加班止时间") Then
        dr("合计加班时间") = Nothing
        dr("单位") = Nothing
    Else
        if dr("加班类型") = "正常工作日" Then
            dr("合计加班时间") = t.Hours
            dr("单位") = "小时"
        End If
        if dr("加班类型") = "休息日" Then
            if t.Hours > 4 Then
                dr("合计加班时间") = 1
                dr("单位") = "天"
            ElseIf t.Hours > 2 Then
                dr("合计加班时间") = 0.5
                dr("单位") = "天"
            Else
                dr("合计加班时间") = t.Hours
                dr("单位") = "小时"
            End If
        End If
        if dr("加班类型") = "法定节假日" Then
            if t.Hours <= 4 Then
                dr("合计加班时间") = 0.5
                dr("单位") = "天"
            Else
                dr("合计加班时间") = 1
                dr("单位") = "天"
            End If
        End If
    End If
End If
4楼
czy 发表于:2009/1/30 15:02:00
三楼可能理会错楼主的意思了,用下面的代码试试。

Dim dc As DataCol = e.DataCol
Dim dr As DataRow = e.DataRow
Dim d1 As  Date = dr("加班止时间")
Dim d2 As  Date = dr("加班起时间")
Dim t As TimeSpan = d1 - d2
If dc.Name = "加班类型" OrElse dc.Name = "加班起时间" OrElse dc.Name = "加班止时间" Then
    if dr.IsNull("加班类型") OrElse dr.IsNull("加班起时间") OrElse dr.IsNull("加班止时间") Then
        dr("合计加班时间") = Nothing
        dr("单位") = Nothing
    Else
        if dr("加班类型") = "正常工作日" Then
            dr("合计加班时间") = Math.Round(t.TotalHours,2)
            dr("单位") = "小时"
        End If
        if dr("加班类型") = "休息日" Then
            if t.TotalHours > 4 Then
                dr("合计加班时间") = 1
                dr("单位") = "天"
            ElseIf t.TotalHours > 2 Then
                dr("合计加班时间") = 0.5
                dr("单位") = "天"
            Else
                dr("合计加班时间") = Math.Round(t.TotalHours,2)
                dr("单位") = "小时"
            End If
        End If
        if dr("加班类型") = "法定节假日" Then
            if t.TotalHours <= 4 Then
                dr("合计加班时间") = 0.5
                dr("单位") = "天"
            Else
                dr("合计加班时间") = 1
                dr("单位") = "天"
            End If
        End If
    End If
End If
[此贴子已经被作者于2009-1-30 15:02:16编辑过]
共4 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02930 s, 3 queries.