以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=13670)

--  作者:zhangxl1964
--  发布时间:2011/10/22 10:03:00
--  求助

这段代码执行时,只能计算出勤1,双休轮休1不能计算,求助修改。

\'出勤代码
If e.DataRow("确认考勤")=True  Then
         Dim chuqin As Decimal         
         If e.DataRow("班组") = "27保安" Then
   chuqin=Math.Floor(((e.DataRow("第一周_一") + e.DataRow("第一周_二") + e.DataRow("第一周_三") + e.DataRow("第一周_四") + e.DataRow("第一周_五") + e.DataRow("第一周_六") + e.DataRow("第一周_日") + e.DataRow("第二周_一") + e.DataRow("第二周_二") + e.DataRow("第二周_三") + e.DataRow("第二周_四") + e.DataRow("第二周_五") + e.DataRow("第二周_六") + e.DataRow("第二周_日") + e.DataRow("第三周_一") + e.DataRow("第三周_二") + e.DataRow("第三周_三") + e.DataRow("第三周_四") + e.DataRow("第三周_五") + e.DataRow("第三周_六") + e.DataRow("第三周_日") + e.DataRow("第四周_一") + e.DataRow("第四周_二") + e.DataRow("第四周_三") + e.DataRow("第四周_四")  + e.DataRow("第四周_五")+ e.DataRow("第四周_六") + e.DataRow("第四周_日") + e.DataRow("第五周_一") + e.DataRow("第五周_二") + e.DataRow("第五周_三") + e.DataRow("第五周_四") + e.DataRow("第五周_五") + e.DataRow("第五周_六") + e.DataRow("第五周_日"))/8+e.DataRow("调休") + e.DataRow("年休假"))*100+0.5)/100
          Else            
   Dim fadingchuqin As Decimal=Tables("法定出勤").Compute("Sum(出勤天数)", "日期=\'" & e.DataRow("考勤日期") & "\'")    
   chuqin = Math.Floor((fadingchuqin-(e.DataRow("第一周_一") + e.DataRow("第一周_二") + e.DataRow("第一周_三") + e.DataRow("第一周_四") + e.DataRow("第一周_五") + e.DataRow("第一周_六") + e.DataRow("第一周_日") + e.DataRow("第二周_一") + e.DataRow("第二周_二") + e.DataRow("第二周_三") + e.DataRow("第二周_四") + e.DataRow("第二周_五") + e.DataRow("第二周_六") + e.DataRow("第二周_日") + e.DataRow("第三周_一") + e.DataRow("第三周_二") + e.DataRow("第三周_三") + e.DataRow("第三周_四") + e.DataRow("第三周_五") + e.DataRow("第三周_六") + e.DataRow("第三周_日") + e.DataRow("第四周_一") + e.DataRow("第四周_二") + e.DataRow("第四周_三") + e.DataRow("第四周_四")  + e.DataRow("第四周_五")+ e.DataRow("第四周_六") + e.DataRow("第四周_日") + e.DataRow("第五周_一") + e.DataRow("第五周_二") + e.DataRow("第五周_三") + e.DataRow("第五周_四") + e.DataRow("第五周_五") + e.DataRow("第五周_六") + e.DataRow("第五周_日"))/8+ e.DataRow("调休") + e.DataRow("年休假"))*100+0.5) / 100
          End If
  e.DataRow("出勤1")=chuqin

         Dim shuangxiulunxiu As Decimal=e.DataRow("双休轮休1")
              If (e.DataRow("第一周加班_六")+e.DataRow("第一周加班_日")+ e.DataRow("第二周加班_六")+e.DataRow("第二周加班_日")+e.DataRow("第三周加班_六")+e.DataRow("第三周加班_日")+e.DataRow("第四周加班_六")+e.DataRow("第四周加班_日")+e.DataRow("第五周加班_六")+e.DataRow("第五周加班_日"))/8+ e.DataRow("节日加班1")>4 Then                     
              shuangxiulunxiu = Math.Floor((e.DataRow("第一周加班_六")+e.DataRow("第一周加班_日")+ e.DataRow("第二周加班_六")+e.DataRow("第二周加班_日")+e.DataRow("第三周加班_六")+e.DataRow("第三周加班_日")+e.DataRow("第四周加班_六")+e.DataRow("第四周加班_日")+e.DataRow("第五周加班_六")+e.DataRow("第五周加班_日"))/8 - e.DataRow("双休加班1")*100+0.5) / 100
              End If
End If
        If e.DataRow("确认考勤")<>True  Then
                e.DataRow("出勤1")=Nothing
             End If


--  作者:狐狸爸爸
--  发布时间:2011/10/22 10:08:00
--  

蒙一下:

 

Dim r As DataRow = e.DataRow
If r("确认考勤")=True  Then
    Dim chuqin As Decimal
    If r("班组") = "27保安" Then
        chuqin=Math.Floor(((r("第一周_一") + r("第一周_二") + r("第一周_三") + r("第一周_四") + r("第一周_五") + r("第一周_六") + r("第一周_日") + r("第二周_一") + r("第二周_二") + r("第二周_三") + r("第二周_四") + r("第二周_五") + r("第二周_六") + r("第二周_日") + r("第三周_一") + r("第三周_二") + r("第三周_三") + r("第三周_四") + r("第三周_五") + r("第三周_六") + r("第三周_日") + r("第四周_一") + r("第四周_二") + r("第四周_三") + r("第四周_四")  + r("第四周_五")+ r("第四周_六") + r("第四周_日") + r("第五周_一") + r("第五周_二") + r("第五周_三") + r("第五周_四") + r("第五周_五") + r("第五周_六") + r("第五周_日"))/8+r("调休") + r("年休假"))*100+0.5)/100
    Else
        Dim fadingchuqin As Decimal=Tables("法定出勤").Compute("Sum(出勤天数)", "日期=\'" & r("考勤日期") & "\'")
        chuqin = Math.Floor((fadingchuqin-(r("第一周_一") + r("第一周_二") + r("第一周_三") + r("第一周_四") + r("第一周_五") + r("第一周_六") + r("第一周_日") + r("第二周_一") + r("第二周_二") + r("第二周_三") + r("第二周_四") + r("第二周_五") + r("第二周_六") + r("第二周_日") + r("第三周_一") + r("第三周_二") + r("第三周_三") + r("第三周_四") + r("第三周_五") + r("第三周_六") + r("第三周_日") + r("第四周_一") + r("第四周_二") + r("第四周_三") + r("第四周_四")  + r("第四周_五")+ r("第四周_六") + r("第四周_日") + r("第五周_一") + r("第五周_二") + r("第五周_三") + r("第五周_四") + r("第五周_五") + r("第五周_六") + r("第五周_日"))/8+ r("调休") + r("年休假"))*100+0.5) / 100
    End If
    r("出勤1")=chuqin
    If (r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8+ r("节日加班1")>4 Then
        r("双休轮休1") = Math.Floor((r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8 - r("双休加班1")*100+0.5) / 100
    End If
End If
If r("确认考勤")<>True  Then
    r("出勤1")=Nothing
End If


--  作者:zhangxl1964
--  发布时间:2011/10/22 16:09:00
--  

还请高手帮助,代码执行时退出系统。

Dim r As DataRow = e.DataRow
If r("确认考勤")=True  Then
    Dim chuqin As Decimal
    If r("班组") = "27保安" Then
        chuqin=Math.Floor(((r("第一周_一") + r("第一周_二") + r("第一周_三") + r("第一周_四") + r("第一周_五") + r("第一周_六") + r("第一周_日") + r("第二周_一") + r("第二周_二") + r("第二周_三") + r("第二周_四") + r("第二周_五") + r("第二周_六") + r("第二周_日") + r("第三周_一") + r("第三周_二") + r("第三周_三") + r("第三周_四") + r("第三周_五") + r("第三周_六") + r("第三周_日") + r("第四周_一") + r("第四周_二") + r("第四周_三") + r("第四周_四")  + r("第四周_五")+ r("第四周_六") + r("第四周_日") + r("第五周_一") + r("第五周_二") + r("第五周_三") + r("第五周_四") + r("第五周_五") + r("第五周_六") + r("第五周_日"))/8+r("调休") + r("年休假"))*1000+0.5)/1000
        Else
        Dim fadingchuqin As Decimal=Tables("法定出勤").Compute("Sum(出勤天数)", "日期=\'" & r("考勤日期") & "\'")
        chuqin = Math.Floor((fadingchuqin-(r("第一周_一") + r("第一周_二") + r("第一周_三") + r("第一周_四") + r("第一周_五") + r("第一周_六") + r("第一周_日") + r("第二周_一") + r("第二周_二") + r("第二周_三") + r("第二周_四") + r("第二周_五") + r("第二周_六") + r("第二周_日") + r("第三周_一") + r("第三周_二") + r("第三周_三") + r("第三周_四") + r("第三周_五") + r("第三周_六") + r("第三周_日") + r("第四周_一") + r("第四周_二") + r("第四周_三") + r("第四周_四")  + r("第四周_五")+ r("第四周_六") + r("第四周_日") + r("第五周_一") + r("第五周_二") + r("第五周_三") + r("第五周_四") + r("第五周_五") + r("第五周_六") + r("第五周_日"))/8+ r("调休") + r("年休假"))*1000+0.5) / 1000
    End If
    r("出勤1")=chuqin
      \'计算双休
      If (r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8+ r("节日加班1")<4 Then
             r("双休加班1") = Math.Floor(((r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8 )*1000+0.5) / 1000
      Else
             r("双休加班1") = Math.Floor(((r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8 - r("节日加班1"))*1000+0.5) / 1000 
      End If
         If (r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8+ r("节日加班1")>4 Then
             r("双休轮休1") = Math.Floor(((r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8 - r("双休加班1"))*1000+0.5) / 1000
         End If
        \'计算平时加班
             If (r("第一周加班_一")+r("第一周加班_二")+r("第一周加班_三")+r("第二周加班_一")+r("第二周加班_二")+r("第二周加班_三")+r("第二周加班_四")+r("第二周加班_五")+r("第三周加班_一")+r("第三周加班_二")+r("第三周加班_三")+r("第三周加班_四")+r("第三周加班_五")+r("第四周加班_一")+r("第四周加班_二")+r("第四周加班_三")+r("第四周加班_四")+r("第四周加班_五")+r("第五周加班_一")+r("第五周加班_二")+r("第五周加班_三")+r("第五周加班_四")+r("第五周加班_五"))/8 <=0 Then
                 r("平时加班1") = Nothing
             End If
             If (r("节日加班1")+r("双休加班1"))>= 4 Then
                  r("平时加班1") = Nothing
             End If
             If (r("第一周加班_一")+r("第一周加班_二")+r("第一周加班_三")+r("第二周加班_一")+r("第二周加班_二")+r("第二周加班_三")+r("第二周加班_四")+r("第二周加班_五")+r("第三周加班_一")+r("第三周加班_二")+r("第三周加班_三")+r("第三周加班_四")+r("第三周加班_五")+r("第四周加班_一")+r("第四周加班_二")+r("第四周加班_三")+r("第四周加班_四")+r("第四周加班_五")+r("第五周加班_一")+r("第五周加班_二")+r("第五周加班_三")+r("第五周加班_四")+r("第五周加班_五"))/8 <4 Then
                 r("平时加班1") = Math.Floor(((r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8+r("双休轮休1") )*1000+0.5) / 1000
             Else
                 r("平时加班1") = Math.Floor((4- r("双休加班1") - r("节日加班1"))*1000+0.5) / 1000 
             End If
         \'计算平时轮休
             If (r("平时加班1")+r("节日加班1")+r("双休加班1")+r("双休轮休1"))<=4 Then
                 r("平时轮休1")= Nothing
             Else
                 r("平时轮休1") = Math.Floor(((r("第一周加班_六")+r("第一周加班_日")+ r("第二周加班_六")+r("第二周加班_日")+r("第三周加班_六")+r("第三周加班_日")+r("第四周加班_六")+r("第四周加班_日")+r("第五周加班_六")+r("第五周加班_日"))/8 - r("平时加班1"))*1000+0.5) / 1000
            End If

End If
If r("确认考勤")<>True  Then
    r("出勤1")=Nothing
End If


--  作者:狐狸爸爸
--  发布时间:2011/10/22 16:24:00
--  

参考这个,找出错误代码位置:

 

http://www.foxtable.com/help/topics/1485.htm

 


--  作者:zhangxl1964
--  发布时间:2011/10/22 17:08:00
--  
能否指点一下啊,我直在找不出。
--  作者:狐狸爸爸
--  发布时间:2011/10/22 17:15:00
--  
没有人能一眼看出错误代码来的,用上面的方法找出错误代码位置,根据错误提示,就能基本知道错误原因了。
--  作者:don
--  发布时间:2011/10/22 17:53:00
--  
錯誤原因,蒙一下:少了判斷If e.DataCol.Name = "确认考勤" Then
代碼似滿天毒蜂,看著煩啊,幫你簡化下,看看是否正確:


If e.DataCol.Name = "确认考勤" Then
    Dim r As DataRow = e.DataRow
    If r("确认考勤")=True  Then
        Dim Ls As String() = {"一","二","三","四","五","六","日"}
        Dim chuqin,fadingchuqin As Decimal
        Dim n,n1 As integer
        For n  = 0 to 4
            for each s as string in Ls
                chuqin+ = r("第" & Ls(n) & "周_" &  s )
            Next
        Next
        
        If r("班组") = "27保安" Then
            chuqin=Math.Floor((chuqin/8+r("调休") + r("年休假"))*100+0.5)/100
        Else
            fadingchuqin= Tables("法定出勤").Compute("Sum(出勤天数)", "日期= #" & r("考勤日期") & "#")
            chuqin=Math.Floor((fadingchuqin-chuqin/8+r("调休") + r("年休假"))*100+0.5)/100
        End If
        r("出勤1")=chuqin
        
        chuqin = 0
        For n  = 0 To 4
            For n1 = 5 To 6
                chuqin+ = r("第" & Ls(n) & "周加班_" &  Ls(n1) )
            Next
        Next
        If chuqin/8+r("节日加班1")>4Then
            r("双休轮休1") = Math.Floor(chuqin/8 - r("双休加班1")*100+0.5) / 100
        End If
    End If
    If r("确认考勤")<>True  Then
        r("出勤1")=Nothing
    End If
End If
[此贴子已经被作者于2011-10-22 18:24:19编辑过]

--  作者:hanxuntx
--  发布时间:2011/10/22 18:09:00
--  
图片点击可在新窗口打开查看这么复杂的代码。出错了还真是不好找啊
--  作者:程兴刚
--  发布时间:2011/10/22 22:00:00
--  
调整一下文件结构用日期列来统计比这个方便多了!