以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计不重复值求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84217)

--  作者:刘异
--  发布时间:2016/4/26 9:31:00
--  统计不重复值求助


此主题相关图片如下:qq图片20160426092013.png
按此在新窗口浏览图片

此主题相关图片如下:qq图片20160426092046.png
按此在新窗口浏览图片

Select Case e.DataCol.Name
    Case "生产日期","部门名称","操作员"
        e.DataRow("岗位系数合计") = DataTables("生产日报").sqlCompute("Sum(岗位系数)","[部门名称] = \'" & e.DataRow("部门名称") & "\'and [生产日期] = #" & e.DataRow("生产日期") & "# ")
End Select

老师好:我想要统计相同日期,相同操作员只统计不重复值;

如上图:我想要的是操作员,张三+李四不重复的;1.2+1=2.2;而不是全部统计,这应该怎么做??先谢了!!


--  作者:大红袍
--  发布时间:2016/4/26 9:47:00
--  
Dim sum As Double = 0
For Each ary() As String In DataTables("生产日报").SQLGetValues("操作员|岗位系数", "[部门名称] = \'" & e.DataRow("部门名称") & "\' and [生产日期] = #" & e.DataRow("生产日期") & "# ")
    sum += val(ary(1))
Next
e.DataRow("岗位系数合计") = sum
[此贴子已经被作者于2016/4/26 9:46:51编辑过]

--  作者:刘异
--  发布时间:2016/4/26 10:06:00
--  

好了,多谢!!


--  作者:刘异
--  发布时间:2016/4/26 11:31:00
--  

老师好:

下面代码只能统计本年本月,不重复操作员的数据,能不能再加上一个条件,

统计本年本月,不重复的(日期+操作员)也就是在相同的日期,相同的操作员情况下,只能统计一次。

举例:

2016年4月25日  张三      生产A产品   共出勤12H

2016年4月25日  张三      生产B产品   共出勤12H

那么出勤只需统计一次,12H

我不知道我有没有说明白,需不需要发个图片上来。

 

Dim sum As Double = 0
For Each ary() As String In DataTables("厚边印刷实绩日报").SQLGetValues("操作员|出勤系数", "[部门名称] = \'" & e.DataRow("部门名称") & "\' and [年份] = \'" & e.DataRow("年份") & "\' And [月份] = \'" & e.DataRow("月份") & "\'")
    sum += val(ary(1))
Next
e.DataRow("出勤系数合计") = sum


--  作者:大红袍
--  发布时间:2016/4/26 11:33:00
--  
Dim sum As Double = 0
For Each ary() As String In DataTables("厚边印刷实绩日报").SQLGetValues("日期|操作员|出勤系数", "[部门名称] = \'" & e.DataRow("部门名称") & "\' and [年份] = \'" & e.DataRow("年份") & "\' And [月份] = \'" & e.DataRow("月份") & "\'")
    sum += val(ary(2))
Next
e.DataRow("出勤系数合计") = sum

--  作者:刘异
--  发布时间:2016/4/26 11:40:00
--  


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

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


正确的结果是:2.3+1.5+1.0+2.76+2.3=9.86;不是7.59


--  作者:刘异
--  发布时间:2016/4/26 11:42:00
--  

上面写错了,是:2.3+1.53+1.0+2.76+2.3


--  作者:大红袍
--  发布时间:2016/4/26 11:45:00
--  
 目测代码没有问题,上传实例测试。
--  作者:刘异
--  发布时间:2016/4/26 13:42:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:欧德雅厚边印刷部绩效管理系统软件- 开发版修正.rar


--  作者:大红袍
--  发布时间:2016/4/26 14:24:00
--  

下面的代码没问题,你的数据【2016-03-17  匡志新】没有填写部门名称自然不计算啊。要不你就不要根据部门名称计算,红色代码去掉

 

Select Case e.DataCol.name
    Case "年份","月份","部门名称"
        Dim sum As Double = 0
        For Each ary() As String In DataTables("厚边印刷实绩日报").SQLGetValues("生产日期|操作员|出勤系数", "[部门名称] = \'" & e.DataRow("部门名称") & "\' and [年份] = \'" & e.DataRow("年份") & "\' And [月份] = \'" & e.DataRow("月份") & "\'")
            msgbox(ary(0) & ary(1) & ary(2))
            sum += val(ary(2))
        Next
        e.DataRow("出勤系数合计") = sum
End Select