Foxtable(狐表)用户栏目专家坐堂 → 求计算工资代码方法


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

主题:求计算工资代码方法

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
求计算工资代码方法  发帖心情 Post By:2016/4/5 15:52:00 [显示全部帖子]

刚接触,复杂点点的代码不会写了,上头急要.求帮助.
项目有个"员工工资表" 要求根据 "员工资料表"中的员工的(部门)和(职位) 自动按生产日报表的当日产值 计算每位员工每日工资. 如第1张图
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:订单生产.foxdb


具体逻辑如下:
1.计算出每人每日累计产值;
2,当日提成=当日产值*当日比例;
3当日部门剩余产值总和默认全分给部门组长当剩余提成,可以手动分给操作员或技术员,相应组长剩余提成减少;
4当日工资=提成+剩余提成-扣餐-其它罚款+其它奖励



图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2016/4/5 18:19:33编辑过]

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/5 16:55:00 [显示全部帖子]

已编辑,请老师帮忙

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/5 18:22:00 [显示全部帖子]

是整个文件夹  还是  订单生产.foxdb

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/5 21:02:00 [显示全部帖子]

2732

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/6 14:22:00 [显示全部帖子]

请帮看下代码,如何避免计算2次
Select Case e.DataCol.name  '计算剩余产值到组长剩余提成
    Case "剩余产值","剩余提成"
        Dim cnt As Double '计算汇总每部门每人每日剩余产值
        cnt = DataTables("员工工资表").Compute("Sum([剩余产值])", "[部门] = '" & e.DataRow("部门") & "'  and [日期] = '" & e.DataRow("日期") & "'")
        Dim cnt1 As Double '计算汇总剩余手工分配提成
        cnt1 = DataTables("员工工资表").Compute("Sum([剩余提成])", "[职位] <> '组长'  And [部门] = '" & e.DataRow("部门") & "' and [日期] = '" & e.DataRow("日期") & "'")
        Dim dr As DataRow '结算填写到组长剩余提成
        Dim Filter11 As String
        Filter11 = "[职位] = '组长'  And [部门] = '" & e.DataRow("部门") & "' and [日期] = '" & e.DataRow("日期") & "'"
        dr = DataTables("员工工资表").Find(Filter11 )
        If dr IsNot Nothing Then '如果找到
            dr("剩余提成")=cnt-cnt1
        Else '如果没找到就新建一行
            Dim dr1 As DataRow '
            Dim Filter12 As String
            Filter12 = "[职位] = '组长'  And [部门] = '" & e.DataRow("部门") & "'"
            dr1 = DataTables("员工资料表").Find(Filter12 ) '到员工表找相应组长名字
            If dr1 IsNot Nothing Then '如果找到
                dr = DataTables("员工工资表").AddNew()
                dr("姓名") = DR1("姓名")
                dr("日期") = e.DataRow("日期")
                dr("剩余提成")=cnt-cnt1
            End If
        End If
End Select



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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/6 18:00:00 [显示全部帖子]

但这样生成新的一行时就不会自动计算了.
看来还是增加一列好了,或就算两次好


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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/6 18:12:00 [显示全部帖子]

一开始逻辑不对,本意是组长从自己的"剩余提成"分给手下,补偿手下工资,避免日工资过低

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/6 19:04:00 [显示全部帖子]

敏感数据不方便全部上传.

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/6 19:32:00 [显示全部帖子]

最后效果达到了,谢谢

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2016/4/11 21:24:00 [显示全部帖子]

Select Case e.DataCol.name  '计算剩余产值到组长剩余提成
    Case "剩余产值","剩余提成"
        Dim cnt As Double '计算汇总每部门每人每日产值
        cnt = DataTables("员工工资表").Compute("Sum([剩余产值])", "[部门] = '" & e.DataRow("部门") & "'  and [日期] = '" & e.DataRow("日期") & "'")
        Dim cnt1 As Double '计算汇总剩余手工分配提成
        cnt1 = DataTables("员工工资表").Compute("Sum([剩余提成])", "[职位] <> '组长'  And [部门] = '" & e.DataRow("部门") & "' and [日期] = '" & e.DataRow("日期") & "'")        
         Dim dr As DataRow '结算填写到组长剩余提成
        Dim Filter11 As String
        Filter11 = "[职位] = '组长'  And [部门] = '" & e.DataRow("部门") & "' and [日期] = '" & e.DataRow("日期") & "'"
        dr = DataTables("员工工资表").Find(Filter11 )

        
        If dr IsNot Nothing Then '如果找到
            dr("剩余提成")=cnt-cnt1
        Else '如果没找到就新建一行
            Dim dr1 As DataRow '
            Dim Filter12 As String
            Filter12 = "[职位] = '组长'  And [部门] = '" & e.DataRow("部门") & "'"
            dr1 = DataTables("员工资料表").Find(Filter12 ) '到员工表找相应组长名字
            If dr1 IsNot Nothing Then '如果找到
                dr = DataTables("员工工资表").AddNew()
                dr("姓名") = DR1("姓名")
                dr("日期") = e.DataRow("日期")
                dr("剩余提成")=cnt-cnt1
            End If
        
End If
End Select



原来每个部门组长只有1位时没问题,现车床部有两位组长,要平分相应部门的剩余产值.代码怎么改


 回到顶部
总数 11 1 2 下一页