Foxtable(狐表)用户栏目专家坐堂 → [求助]计算出勤补贴,代码出错。(已解决)


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

主题:[求助]计算出勤补贴,代码出错。(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]计算出勤补贴,代码出错。(已解决)  发帖心情 Post By:2011/10/16 20:11:00 [只看该作者]

一段计算出勤补贴的代码,代码出错。

不同的核算标准和单位,其满勤补贴和缺勤扣除的标准也不同,"√"为满勤,得满勤补贴;"-1"为缺勤一天,得"满勤补贴" -" 缺勤扣除","-2"为缺勤2天,得"满勤补贴" -" 缺勤扣除"*2,以此类推。此段代码运行出错,请各位老师帮助指教,谢谢!!

 

'报酬明细_DataColChanged

Select Case e.DataCol.Name
    Case "核算标准","单位"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        Dim mqbt As Double
        If dr.IsNull("核算标准") OrElse dr.IsNull("单位") Then
            mqbt = Nothing
        Else
            Dim filter As String
            filter = "核算标准 = '" & dr("核算标准") & "' And 单位 = '" & dr("单位") & "'"
            pr = DataTables("核算标准").Find(filter)
            If pr IsNot Nothing Then
                mqbt =CDbl( pr("满勤补贴"))
            End If
        End If
End Select
Select Case e.DataCol.Name
    Case "核算标准","单位"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        Dim qqkc As Double
        If dr.IsNull("核算标准") OrElse dr.IsNull("单位") Then
            qqkc = Nothing
        Else
            Dim filter As String
            filter = "核算标准 = '" & dr("核算标准") & "' And 单位 = '" & dr("单位") & "'"
            pr = DataTables("核算标准").Find(filter)
            If pr IsNot Nothing Then
                qqkc = CDbl(pr("缺勤扣除"))
            End If
        End If
End Select
If e.DataCol.Name = "出勤状况" Then
    If e.DataRow("出勤状况") = "√" Then
        e.DataRow("出勤补贴") = "mqbt"
    ElseIf e.DataRow("出勤状况") = "-1"
        e.DataRow("出勤补贴") = "mqbt-qqkc*1"
    ElseIf e.DataRow("出勤状况") = "-2"
        e.DataRow("出勤补贴") = "mqbt-qqkc*2"
    ElseIf e.DataRow("出勤状况") = "-3"
        e.DataRow("出勤补贴") = "mqbt-qqkc*3"
    ElseIf e.DataRow("出勤状况") = "-4"
        e.DataRow("出勤补贴") = "mqbt-qqkc*4"
    ElseIf e.DataRow("出勤状况") = "-5"
        e.DataRow("出勤补贴") = "mqbt-qqkc*5"
    Else
        e.DataRow("出勤补贴") = Nothing
    End If
End If

 

出错截图:

 


图片点击可在新窗口打开查看此主题相关图片如下:k.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-10-16 21:58:54编辑过]

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


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2011/10/16 20:26:00 [只看该作者]

列类型错了吧

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/10/16 20:35:00 [只看该作者]

忘了上传项目,现补上,请各位老师指教,谢谢!!

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

[此贴子已经被作者于2011-10-16 20:36:39编辑过]

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


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

Select Case e.DataCol.Name
    Case "核算标准","单位"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        Dim mqbt As Double
        If dr.IsNull("核算标准") OrElse dr.IsNull("单位") Then
            'mqbt = Nothing
        Else
            Dim filter As String
            filter = "核算标准 = '" & dr("核算标准") & "' And 单位 = '" & dr("单位") & "'"
            pr = DataTables("核算标准").Find(filter)
            If pr IsNot Nothing Then
                mqbt =CDbl( pr("满勤补贴"))
            End If
        End If
End Select
Select Case e.DataCol.Name
    Case "核算标准","单位"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        Dim qqkc As Double
        If dr.IsNull("核算标准") OrElse dr.IsNull("单位") Then
            qqkc = Nothing
        Else
            Dim filter As String
            filter = "核算标准 = '" & dr("核算标准") & "' And 单位 = '" & dr("单位") & "'"
            pr = DataTables("核算标准").Find(filter)
            If pr IsNot Nothing Then
                qqkc = CDbl(pr("缺勤扣除"))
            End If
        End If
End Select
If e.DataCol.Name = "出勤状况" Then
    If e.DataRow("出勤状况") = "√" Then
        e.DataRow("出勤补贴") = mqbt
    ElseIf e.DataRow("出勤状况") = "-1"
        e.DataRow("出勤补贴") = mqbt-qqkc*1
    ElseIf e.DataRow("出勤状况") = "-2"
        e.DataRow("出勤补贴") = mqbt-qqkc*2
    ElseIf e.DataRow("出勤状况") = "-3"
        e.DataRow("出勤补贴") = mqbt-qqkc*3
    ElseIf e.DataRow("出勤状况") = "-4"
        e.DataRow("出勤补贴") = mqbt-qqkc*4
    ElseIf e.DataRow("出勤状况") = "-5"
        e.DataRow("出勤补贴") = mqbt-qqkc*5
    Else
        e.DataRow("出勤补贴") = Nothing
    End If
End If

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/10/16 20:58:00 [只看该作者]

谢谢czy老师的回复。但是好像还不行,结果全部为零,问题不知出在哪里。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
菜鸟求教  发帖心情 Post By:2011/10/16 21:34:00 [只看该作者]

Dim mqbt As Double
Dim qqkc As Double
Dim dr As DataRow = e.DataRow
Dim pr As DataRow
Dim filter As String
Select Case e.DataCol.Name
    Case "核算标准","单位","出勤状况"
        If dr.IsNull("核算标准") = False And dr.IsNull("单位") = False And dr.IsNull("出勤状况") = False Then
            filter = "核算标准 = '" & dr("核算标准") & "' And 单位 = '" & dr("单位") & "'"
            pr = DataTables("核算标准").Find(filter)
            If pr IsNot Nothing Then
                mqbt = CDbl(pr("满勤补贴"))
                qqkc = CDbl(pr("缺勤扣除"))
                If dr("出勤状况") = "√" Then
                    dr("出勤补贴") = mqbt
                ElseIf Val(dr("出勤状况")) = 0
                    dr("出勤补贴") = Nothing
                Else
                    dr("出勤补贴") = mqbt-qqkc*Math.Abs(Val(e.DataRow("出勤状况")))
                End If
            End If
        End If
End Select

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/10/16 21:41:00 [只看该作者]

还得加一行代码:

Dim mqbt,qqkc As Double
Dim dr As DataRow = e.DataRow
Dim pr As DataRow
Dim filter As String
Select Case e.DataCol.Name
    Case "核算标准","单位","出勤状况"
        If dr.IsNull("核算标准") = False And dr.IsNull("单位") = False And dr.IsNull("出勤状况") = False Then
            filter = "核算标准 = '" & dr("核算标准") & "' And 单位 = '" & dr("单位") & "'"
            pr = DataTables("核算标准").Find(filter)
            If pr IsNot Nothing Then
                mqbt = CDbl(pr("满勤补贴"))
                qqkc = CDbl(pr("缺勤扣除"))
                If dr("出勤状况") = "√" Then
                    dr("出勤补贴") = mqbt
                ElseIf Val(dr("出勤状况")) = 0
                    dr("出勤补贴") = Nothing
                Else
                    dr("出勤补贴") = mqbt-qqkc*Math.Abs(Val(e.DataRow("出勤状况")))
                End If
            End If
        Else
            dr("出勤补贴") = Nothing
        End If
End Select

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/10/16 21:58:00 [只看该作者]

谢谢czy老师的指教,代码通过,完全达到预期效果,再次衷心感谢czy老师的热情帮助!!

 回到顶部