以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求教,代码怎么写?学习中..  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=7854)

--  作者:andy621
--  发布时间:2010/8/12 9:14:00
--  求教,代码怎么写?学习中..
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar


1.累计用时,由完成时间-开始时间
2.表\'工作时间\'的工号写入时,姓名自动从人员资料里面提取
这两个代码要怎么写?求教了,谢谢!
[此贴子已经被作者于2010-8-12 9:36:41编辑过]

--  作者:卟离卟弃
--  发布时间:2010/8/12 13:27:00
--  

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

 

是不是想这样?


--  作者:andy621
--  发布时间:2010/8/12 15:22:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:未命名.bmp
图片点击可在新窗口打开查看

谢谢!卟离卟弃
不过还差点,要计算出时间的小时数和分钟数,比如说
23:32~05:00 小时数应为5   分钟数应为28  

也就是说时间要以24小时制,分钟以60为进制
图片点击可在新窗口打开查看
[此贴子已经被作者于2010-8-12 15:31:29编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/8/12 15:59:00
--  
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "工号"
        Dim dr1 As DataRow
        dr1 = DataTables("人员资料").Find("[工号] = \'" & e.NewValue & "\'")
        If dr1 IsNot Nothing Then
            dr("姓名") = dr1("姓名")
        End If
    Case "开始时间","完成时间"     
        If dr.IsNull("开始时间") = False And dr.IsNull("完成时间") = False Then
            dr("累计用时时")=(dr("完成时间")- dr("开始时间")).Hours
            dr("累计用时分")=(dr("完成时间")- dr("开始时间")).Minutes
        End If
End Select
[此贴子已经被作者于2010-8-12 16:00:01编辑过]

--  作者:andy621
--  发布时间:2010/8/13 8:01:00
--  
以下是引用狐狸爸爸在2010-8-12 15:59:00的发言:
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "工号"
        Dim dr1 As DataRow
        dr1 = DataTables("人员资料").Find("[工号] = \'" & e.NewValue & "\'")
        If dr1 IsNot Nothing Then
            dr("姓名") = dr1("姓名")
        End If
    Case "开始时间","完成时间"     
        If dr.IsNull("开始时间") = False And dr.IsNull("完成时间") = False Then
            dr("累计用时时")=(dr("完成时间")- dr("开始时间")).Hours
            dr("累计用时分")=(dr("完成时间")- dr("开始时间")).Minutes
        End If
End Select
[此贴子已经被作者于2010-8-12 16:00:01编辑过]
 

狐爸,还有点问题,可能我没表达清楚,要实现下面的计算结果(如图):

1.计算的结果换算好要把小时和分钟分开来

2.如时间段内碰到12点至13点这区间的,要自动扣掉一小时


图片点击可在新窗口打开查看此主题相关图片如下:未命名.bmp
图片点击可在新窗口打开查看
[此贴子已经被作者于2010-8-13 8:01:54编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/8/13 8:41:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目39.table


--  作者:mr725
--  发布时间:2010/8/13 11:48:00
--  
估计楼主是想超过中午12点后都要减少1小时吧?  也就是从13点开始计算~~~~
--  作者:andy621
--  发布时间:2010/8/13 13:45:00
--  
以下是引用mr725在2010-8-13 11:48:00的发言:
估计楼主是想超过中午12点后都要减少1小时吧?  也就是从13点开始计算~~~~

其实这个是用来计算生产车间的作业员在两个时间区间的实际工作时间的,其中有实行2班倒,每个 班中间还有固定的损耗时间.报表在写的时候同料同作业员时间段是不分开写的,如8:00~19:00 生产A料 张三(这中间须扣除中午1小时,傍晚半小时);21:00~5:50 生产B料 李四 (这中间须扣除上半夜30分钟,凌晨30分钟)
 如下规则:
 1.白班:中午12:00~13:00用餐及午休,傍晚17:30~18:00晚餐 
 2.晚班:23:00~23:30 用餐 凌晨4:00~4:30休息 
我想设定在这时间段内的设定自动扣除相应的时间,我现在的水平还搞不定这些,麻烦大家帮忙看下!有没办法?
[此贴子已经被作者于2010-8-13 14:04:51编辑过]

--  作者:mr725
--  发布时间:2010/8/13 15:04:00
--  

Dim h0 As Date = dr("开始时间")
Dim h1 As Date = dr("完成时间")
If dr.IsNull("开始时间") = False And dr.IsNull("完成时间") = False Then
    If h0.hour = 12 

            If  h1 < h0 Then
                h1 = h1.AddHours(24)
            End If

        dr("累计用时时")=(h1- h0).Hours-1
        dr("累计用时分")=(h1- h0).Minutes
    Else       

           \' *******.这样不停的设置条件即可```````

            If  h1 < h0 Then
                h1 = h1.AddHours(24)
            End If
            dr("累计用时时")=(h1-h0).Hours
            dr("累计用时分")=(h1-h0).Minutes
    End If
End If


--  作者:andy621
--  发布时间:2010/8/13 16:33:00
--  
以下是引用mr725在2010-8-13 15:04:00的发言:

Dim h0 As Date = dr("开始时间")
Dim h1 As Date = dr("完成时间")
If dr.IsNull("开始时间") = False And dr.IsNull("完成时间") = False Then
    If h0.hour = 12 

            If  h1 < h0 Then
                h1 = h1.AddHours(24)
            End If

        dr("累计用时时")=(h1- h0).Hours-1
        dr("累计用时分")=(h1- h0).Minutes
    Else       

           \' *******.这样不停的设置条件即可```````

            If  h1 < h0 Then
                h1 = h1.AddHours(24)
            End If
            dr("累计用时时")=(h1-h0).Hours
            dr("累计用时分")=(h1-h0).Minutes
    End If
End If


谢谢!学习下...试试看
[此贴子已经被作者于2010-8-13 16:38:22编辑过]