Foxtable(狐表)用户栏目专家坐堂 → 笔记 分组 交叉 临时表组合


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

主题:笔记 分组 交叉 临时表组合

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
笔记 分组 交叉 临时表组合  发帖心情 Post By:2014/11/17 13:55:00 [只看该作者]

在这里做笔记,方便以后调用.

 


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

 

Tables("部门考勤_Table3").StopRedraw
Dim Filter As String
With e.Form.Controls("bm1")
    If .Value IsNot Nothing Then
       Filter = "部门 in ('" & .Value.replace(",", "','") & "')"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "考勤日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "考勤日期 <= #" & .Value & "#"
    End If
End With
DataTables("部门考勤").LoadFilter = Filter
DataTables("部门考勤").Load()
DataTables("考勤机数据").LoadFilter = Filter
DataTables("考勤机数据").Load()

Dim bd0 As New GroupTableBuilder("考勤机",DataTables("考勤机数据"))
Dim dt0 As fxDataSource
bd0.Groups.AddDef("部门") '根据型号分组
Bd0.Groups.AddDef("姓名") '根据型号分组
Bd0.Totals.AddDef("实出勤d","考勤机_出勤") '对数量进行统计
Bd0.Totals.AddDef("请假h","考勤机_请假") '对数量进行统计
Bd0.Filter = Filter
Dt0 = bd0.BuildDataSource()

Dim bd1 As New GroupTableBuilder("部门",DataTables("部门考勤"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("姓名") '根据型号分组
bd1.Totals.AddDef("出勤","部门考勤_出勤") '对数量进行统计
bd1.Totals.AddDef("请假","部门考勤_请假") '对数量进行统计
dt1 = bd1.BuildDataSource()

Dim bd3 As New CrossTableBuilder("部门1",DataTables("部门考勤"))
Dim dt3 As fxDataSource
bd3.HGroups.AddDef("姓名") '添加客户列用于水平分组
bd3.VGroups.AddDef("工作日") '添加产品列用于垂直分组,并设置了Pattern参数
bd3.Totals.AddDef("出勤") '添加数量列用于统计
bd3.Build '生成统计表
dt3 = bd3.BuildDataSource

Dim bd2 As New DataTableBuilder("表B")
Dim dt2 As fxDataSource
bd2.AddDef("姓名", Gettype(String), 32)
For Each v As Date In DataTables("部门考勤").GetValues("考勤日期")
    bd2.AddDef(v, Gettype(String), 32, "", v.Day)
Next
bd2.Build()
dt2 = bd2.BuildDataSource

For Each v As String In DataTables("部门考勤").GetValues("姓名")
    Dim dr1 As DataRow = DataTables("表B").AddNew()
    dr1("姓名") = v
    For Each dr2 As DataRow In DataTables("部门考勤").DataRows
        If dr2("姓名") = v Then
            dr1(dr2("考勤日期")) = dr2("备注")
        End If
    Next
Next
dt0.Combine("姓名",dt1,"姓名")
dt0.Combine("姓名",dt3,"姓名")
dt0.Combine("姓名",dt2,"姓名")
Tables("部门考勤_Table3").DataSource = dt0 '将统计结果绑定到Table

With DataTables("部门考勤_Table3").DataCols  '用表达式列计算期初数据
    .Add("常规",Gettype(Double),"","常规")
    .Add("双休",Gettype(Double),"[部门考勤_出勤] - [星期四]")
   End With

For Each r As Row In Tables("部门考勤_Table3").Rows
    For Each dr2 As DataRow In DataTables("部门考勤").DataRows
        If dr2("姓名") = r("姓名") Then
            r(dr2("考勤日期")) = dr2("备注")
        End If
    Next
Next

Tables("部门考勤_Table3").ResumeRedraw
Tables("部门考勤_Table3").DefaultRowHeight = 24
Tables("部门考勤_Table3").DefaultColWidth = 46
Tables("部门考勤_Table3").ResumeRedraw
Tables("部门考勤_Table3").Sort = "部门"

 

脑已残.......


 

[此贴子已经被作者于2014-11-17 13:57:54编辑过]

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/11/17 14:00:00 [只看该作者]

似乎交叉统计表无法再计算,交叉统计表列名如何引用?

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/11/17 14:06:00 [只看该作者]

窗口表列可不可以反选?

类似Tables("看板_Table2").SetColVisibleWidth ,设置Tables("看板_Table2").SetColUnVisible,选中的列不显示.


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


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

 请明确你想问什么,同时把例子发上来。

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/11/17 14:48:00 [只看该作者]

交叉统计表可不可以再计算?用狐表的示例文件来说:

 


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

 

添加列,列名"A类",A类=PD01+PD02,计算公式怎么列?


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


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

 生成的表以后,列名不是你看到的那个,而是类似 产品_1、产品_2、产品_3这样的,所以写表达式的时候,要写对列名

 

 http://www.foxtable.com/help/topics/0193.htm

 


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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/11/17 15:00:00 [只看该作者]

窗口表且是临时表能查看表结构吗?在那查看?


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


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


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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/11/17 15:17:00 [只看该作者]

With DataTables("部门考勤_Table3").DataCols  '用表达式列计算期初数据
    .Add("常规",Gettype(Double),"[出勤_1] + [出勤_2]")
    .Add("双休",Gettype(Double),"[部门考勤_出勤] - [常规]")
   End With

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/11/17 15:20:00 [只看该作者]

考勤数据是动态的,如果"出勤_2"数据未输入"部门考勤"表,会弹出提示对话框,如何使提示框不弹出?

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