Foxtable(狐表)用户栏目专家坐堂 → 求助


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

主题:求助

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


加好友 发短信
等级:二尾狐 帖子:553 积分:5327 威望:0 精华:0 注册:2011/6/7 13:33:00
求助  发帖心情 Post By: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


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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:553 积分:5327 威望:0 精华:0 注册:2011/6/7 13:33:00
  发帖心情 Post By: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


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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/10/22 16:24:00 [只看该作者]

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

 

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

 


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


加好友 发短信
等级:二尾狐 帖子:553 积分:5327 威望:0 精华:0 注册:2011/6/7 13:33:00
  发帖心情 Post By:2011/10/22 17:08:00 [只看该作者]

能否指点一下啊,我直在找不出。

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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/10/22 17:15:00 [只看该作者]

没有人能一眼看出错误代码来的,用上面的方法找出错误代码位置,根据错误提示,就能基本知道错误原因了。

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2011/10/22 18:09:00 [只看该作者]

图片点击可在新窗口打开查看这么复杂的代码。出错了还真是不好找啊

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/10/22 22:00:00 [只看该作者]

调整一下文件结构用日期列来统计比这个方便多了!

 回到顶部