Foxtable(狐表)用户栏目专家坐堂 → [求助]按“月工资”表的指定条件从“年度工资”表中汇总数据的代码


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

主题:[求助]按“月工资”表的指定条件从“年度工资”表中汇总数据的代码

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
[求助]按“月工资”表的指定条件从“年度工资”表中汇总数据的代码  发帖心情 Post By:2019/4/9 15:40:00 [只看该作者]

老师好。新的代码问题,小白请老师帮助。

      就是想:按“月工资”表的【工号“截取后8位” + 姓名】为查找汇总条件,从“年度工资”表中查找符合条件的所有记录,统计“出现的次数”、汇总“养老保险”、“医疗保险”、“住房公积”、“扣个税”四列,将汇总的各列数据和出现次数分别写入“月工资”表的“养老保险”、“医疗保险”、“住房公积”、“扣个税”‘、“计发期数”五列。
请老师帮助。谢谢

[此贴子已经被作者于2019/5/6 17:28:53编辑过]

 回到顶部
帅哥,在线噢!
y2287958
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/4/9 17:21:00 [只看该作者]

For Each dr As DataRow In DataTables("月工资").DataRows
    Dim filter As String = "SubString(工号,11,8)='" & right(dr("工号"),8) & "' and 姓名='" & dr("姓名") & "'"
    Dim drs As List(of DataRow) = DataTables("年度工资").Select(filter)
    dr("养老保险") = DataTables("年度工资").Compute("Sum(养老保险)",filter)
    dr("计发期数") = drs.Count
Next

其他类同

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/9 17:49:00 [只看该作者]

谢谢老师。按您的代码已实现我想要的效果。但还是加入“扣个税”这一列的代码【dr("扣个税") = DataTables("年度工资").Compute("Sum(扣个税)",filter)】后还是出错。提示如前。

代码和其它代码一样是复制修改的,但单这一行出错。找不出错误原因,还请老师帮助。谢谢。



[此贴子已经被作者于2019/5/6 17:29:20编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/9 18:45:00 [只看该作者]

表达式列,无法直接写代码赋值。请改成数据列

 

http://www.foxtable.com/webhelp/scr/2494.htm

 


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/9 19:28:00 [只看该作者]

甜老师好。下面我这样套改“y2287958”老师的代码对不对。请老师指正。

再就是,总共才100来行数据,代码执行了有3分钟左右,这样正常吗。
再请教老师,能将代码改为在窗口的“按钮”点击事件执行吗。谢谢。


[此贴子已经被作者于2019/5/6 17:30:05编辑过]

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 20:24:00 [只看该作者]

这种用法一般不放在表事件中,放到按钮中

如果是表事件就不需要遍历了:
Select Case e.DataCol.Name
    Case "工号", "姓名"
        dim dr =e.DataRow
        Dim filter As String = "SubString(工号,11,8)='" & right(dr("工号"),8) & "' and 姓名='" & dr("姓名") & "'"
        dr("累计养老保险") = DataTables("薪资累计库").Compute("Sum(养老保险)",filter)
        dr("累计医疗保险") = DataTables("薪资累计库").Compute("Sum(医疗保险)",filter)
        dr("累计大病统筹") = DataTables("薪资累计库").Compute("Sum(大病统筹)",filter)
        dr("累计失业保险") = DataTables("薪资累计库").Compute("Sum(失业保险)",filter)
        dr("累计住房公积") = DataTables("薪资累计库").Compute("Sum(住房公积)",filter)
        dr("累计企业年金") = DataTables("薪资累计库").Compute("Sum(企业年金)",filter)
        dr("累计子女教育") = DataTables("薪资累计库").Compute("Sum(子女教育)",filter)
        dr("累计继续教育") = DataTables("薪资累计库").Compute("Sum(继续教育)",filter)
        dr("累计大病医疗") = DataTables("薪资累计库").Compute("Sum(大病医疗)",filter)
        dr("累计房贷利息") = DataTables("薪资累计库").Compute("Sum(房贷利息)",filter)
        dr("累计住房租金") = DataTables("薪资累计库").Compute("Sum(住房租金)",filter)
        dr("累计赡养老人") = DataTables("薪资累计库").Compute("Sum(赡养老人)",filter)
        dr("累计入井津贴") = DataTables("薪资累计库").Compute("Sum(井下津贴金额)",filter)
        dr("累计夜班津贴") = DataTables("薪资累计库").Compute("Sum(夜贴金额)",filter)
        dr("累计公务车补") = DataTables("薪资累计库").Compute("Sum(车补金额)",filter)
        dr("累计已预扣预缴税额") = DataTables("薪资累计库").Compute("Sum(扣缴税额)",filter)
        dr("累计期数") = drs.Count
End Select
[此贴子已经被作者于2019/4/9 20:24:11编辑过]

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/9 20:46:00 [只看该作者]

蓝老师好。我已按老师指导将代码放入窗口的按钮中执行,速度就快多了。

再请教老师,我想改为截取最后的11位(我这里的“工号”总长是18位,上面是我写错了),要怎样修改。谢谢老师。
[此贴子已经被作者于2019/5/6 17:31:01编辑过]

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 20:54:00 [只看该作者]

Dim filter As String = "SubString(工号,8,11)='" & right(dr("工号"),11) & "' and 姓名='" & dr("姓名") & "'"

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/4/9 21:18:00 [只看该作者]

谢谢老师帮助。老师给的代码中的“8,11”,是“从第8位开始截取11位”的意思吗。那原来代码的“11,8”的意思就是“从第11位开始截取8位”的意思了。请老师指教。谢谢

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 21:26:00 [只看该作者]

是的,学习下帮助,有说明:http://www.foxtable.com/webhelp/scr/0102.htm

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