Foxtable(狐表)用户栏目专家坐堂 → 自动汇总代码


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

主题:自动汇总代码

美女呀,离线,留言给我吧!
zhangning
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
自动汇总代码  发帖心情 Post By:2016/8/16 16:32:00 [只看该作者]

现有2个表,
图片点击可在新窗口打开查看此主题相关图片如下:考勤机.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:出勤汇总.png
图片点击可在新窗口打开查看
想要的结果是根据考勤机表,自动分月份汇总

 回到顶部
美女呀,离线,留言给我吧!
zhangning
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2016/8/16 16:35:00 [只看该作者]

现在在DATACOLCHANGED中写的代码是
If e.DataCol.Name = "姓名"  Then
    Dim Filter As String = "[姓名] = '" & e.NewValue & "'" 
    e.DataRow("一倍半加班H") = DataTables("考勤机").Compute("Sum(一倍半加班H)", Filter)
    e.DataRow("二倍加班H") = DataTables("考勤机").Compute("Sum(二倍加班H)", Filter)
    e.DataRow("三倍加班H") = DataTables("考勤机").Compute("Sum(三倍加班H)", Filter)
    e.DataRow("迟到H") = DataTables("考勤机").Compute("Sum(迟到H)", Filter)
    e.DataRow("早退H") = DataTables("考勤机").Compute("Sum(早退H)", Filter)
    e.DataRow("未打卡回") = DataTables("考勤机").Compute("Sum(未打卡回)", Filter)
    e.DataRow("有薪休假H") = DataTables("考勤机").Compute("Sum(有薪休假H)", Filter)
    e.DataRow("事假H") = DataTables("考勤机").Compute("Sum(事假H)", Filter)
    e.DataRow("病假H") = DataTables("考勤机").Compute("Sum(病假H)", Filter)
End If
Select Case e.DataCol.Name
    Case "姓名"
        Dim pr As DataRow
        pr = DataTables("考勤机").Find("姓名 = '" & e.DataRow("姓名") & "'")
        If pr IsNot Nothing Then
            DataTables("考勤机").DataCols("姓名").RaiseDataColChanged(pr)
        End If
End Select

存在的问题是:
1.没有加入按“年月”汇总的条件
2.出勤汇总表中,需要手输入“年月”和“姓名”,
请老师帮帮忙,谢谢!


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/16 16:41:00 [只看该作者]

1、

 

If e.DataCol.Name = "姓名" OrElse e.dataCol.Name = "年月" Then
    Dim Filter As String = "[姓名] = '" & e.DataRow("姓名") & "' and 年月 = '" & e.datarow("年月") & "'"
    e.DataRow("一倍半加班H") = DataTables("考勤机").Compute("Sum(一倍半加班H)", Filter)
    e.DataRow("二倍加班H") = DataTables("考勤机").Compute("Sum(二倍加班H)", Filter)
    e.DataRow("三倍加班H") = DataTables("考勤机").Compute("Sum(三倍加班H)", Filter)
    e.DataRow("迟到H") = DataTables("考勤机").Compute("Sum(迟到H)", Filter)
    e.DataRow("早退H") = DataTables("考勤机").Compute("Sum(早退H)", Filter)
    e.DataRow("未打卡回") = DataTables("考勤机").Compute("Sum(未打卡回)", Filter)
    e.DataRow("有薪休假H") = DataTables("考勤机").Compute("Sum(有薪休假H)", Filter)
    e.DataRow("事假H") = DataTables("考勤机").Compute("Sum(事假H)", Filter)
    e.DataRow("病假H") = DataTables("考勤机").Compute("Sum(病假H)", Filter)
End If

 

2、用代码填充

 

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

 

 

 


 回到顶部
美女呀,离线,留言给我吧!
zhangning
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2016/8/16 16:53:00 [只看该作者]

按照老师说的,完美解决,
用代码填充的  请问老师,除了在命令窗口中外,能否放在事件中去? 放在什么事件呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/16 17:17:00 [只看该作者]

以下是引用zhangning在2016/8/16 16:53:00的发言:
按照老师说的,完美解决,
用代码填充的  请问老师,除了在命令窗口中外,能否放在事件中去? 放在什么事件呢?

 

可以写到AfterOpenProject事件。


 回到顶部
美女呀,离线,留言给我吧!
zhangning
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2016/8/17 10:26:00 [只看该作者]

老师,这样能填充进去,只是,每次打开都填充一次,
怎样才能让同一月份的同一人只能填充一次,或者,打开时,如已经有了,就不填充了,


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/17 11:04:00 [只看该作者]

设置属性为true

 

ExcludeExistValue

逻辑型,设为True,排除接收表中已经存在的内容。


 回到顶部
美女呀,离线,留言给我吧!
zhangning
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2016/8/17 14:26:00 [只看该作者]

老师,这个解决了,

我想要的结果是:   如果“全勤天数” = “出勤天数” ,“有全勤奖”(逻辑列)选中

但以下代码不管用,请老师帮看看问题出在哪里?
If e.DataCol.Name = "全勤天数" AndAlso e.DataCol.Name =  "出勤天数" Then
    If e.DataRow("全勤天数") = e.DataRow("出勤天数") Then
        If e.DataRow("有全勤奖") = True
        Else
            e.DataRow("有全勤奖") = False
        End If
    End If
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/17 14:54:00 [只看该作者]

If e.DataCol.Name = "全勤天数" OrElse e.DataCol.Name =  "出勤天数" Then
    If e.DataRow("全勤天数") = e.DataRow("出勤天数") Then
        If e.DataRow("有全勤奖") = True
        Else
            e.DataRow("有全勤奖") = False
        End If
    End If
End If

 回到顶部