Foxtable(狐表)用户栏目专家坐堂 → [求助]统计


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

主题:[求助]统计

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109491 积分:557123 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/10 22:09:00 [显示全部帖子]

拼接字符串,生成筛选条件。自己弹出filter内容,看效果

1=1是为了少用一点代码,少做一些判断,提高效率,多用代码的例子看:http://www.foxtable.com/webhelp/scr/1058.htm

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


加好友 发短信
等级:超级版主 帖子:109491 积分:557123 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/11 14:20:00 [显示全部帖子]

下面注释的代码自己改回来

 

Dim lsb As DataTable = DataTables("表B")
Dim ryz() As String = {"A","B","C","D"}
Dim dtb As New DataTableBuilder("统计表")
dtb.AddDef("检测性质", Gettype(String), 32)
For Each ry As String In ryz
    dtb.AddDef(ry, Gettype(Double), 32)
Next
dtb.AddDef("总计", Gettype(Double))
dtb.Build()
Dim rq As Date
'With RibbonTabs("自定义1")("无损日统计表")
'rq = .Items("rq").value
'End With
Dim filter As String
'If rq <> Nothing Then
filter &= " [首次检测_检测日期] >= #2/1/2017#"
'End If首次检测_检测日期
Dim dr As DataRow = DataTables("统计表").AddNew()
Dim dr1 As DataRow = DataTables("统计表").AddNew()
Dim dr2 As DataRow = DataTables("统计表").AddNew()
Dim dr3 As DataRow = DataTables("统计表").AddNew()
For Each ry As String In ryz
    dr("检测性质") = "首次检测"
    dr(ry) = lsb.Compute("sum(首次检测人员_" & ry & ")", filter)
    dr1("检测性质") = "返修检测"
    dr1(ry) = lsb.Compute("sum(返修_" & ry & ")", filter)
    dr2("检测性质") = "二次返修检测"
    dr2(ry) = lsb.Compute("sum(二次返修_" & ry & ")", filter)
    dr3("检测性质") = "合计:"
    dr3(ry) = dr(ry) + dr1(ry) + dr2(ry)
    Dim i As Double
    Dim sum As Double
    sum = i + dr(ry)
    dr("总计") = sum
Next
filter = "1=1"
For Each ry As String In ryz
    filter &= " and " & ry & " is null "
    If DataTables("统计表").Compute("Sum(" & ry & ")") = 0 Then DataTables("统计表").DataCols.Delete(ry)
Next


DataTables("统计表").DeleteFor(filter)

MainTable = Tables("统计表")


 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109491 积分:557123 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/11 15:32:00 [显示全部帖子]

仔细看15楼代码了吗??

 

Dim lsb As DataTable = DataTables("表B")
Dim ryz() As String = {"A","B","C","D"}
Dim dtb As New DataTableBuilder("统计表")
dtb.AddDef("检测性质", Gettype(String), 32)
For Each ry As String In ryz
    dtb.AddDef(ry, Gettype(Double), 32)
Next
dtb.AddDef("总计", Gettype(Double))
dtb.Build()


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109491 积分:557123 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/11 17:04:00 [显示全部帖子]

我测试没有问题,重新上传例子看看

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109491 积分:557123 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/13 17:45:00 [显示全部帖子]

1、数据都加载进来,用法一样,不要改代码

 

2、后台统计使用sqlCompute,不过效率不高


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109491 积分:557123 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/14 11:12:00 [显示全部帖子]

缺少某一列一般是列名写错了

 回到顶部