在这里做笔记,方便以后调用.
此主题相关图片如下: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编辑过]