Access 中的窗体和数据表支持两种新视图:PivotTable®(数据透视表)视图和 PivotChart®(数据透视图)视图。数据透视表视图使用 Office 数据透视表组件,易于进行交互式数据分析。数据透视图视图使用 Office Chart 组件,帮助您创建动态的交互式图表。这些视图支持交互操作,例如添加、筛选和排序数据,而无需写入代码。然而,如果要生成基于用户输入的运行时视图,则需要编写代码。本文介绍了在数据透视表和数据透视图视图中执行简单任务(例如移动和筛选字段)的示例代码。
有关向窗体添加代码的详细信息,请参阅 Access 帮助。
注释 下面的示例基于 Access 包含的罗斯文贸易示例数据库。
包含对 Office Web 组件库的引用
要运行下面的示例代码,您的数据库必须包含对 Owc11.dll(对于 Access 2003)或 Owc10.dll(对于 Access 2002)的引用。使用 Access 2000 或更早版本创建的数据库,或使用 Access 2002 或更高版本创建但以 Access 2000 文件格式保存的数据库,不包括此引用。
将对 Owc11.dll 或 Owd10.dll 的引用添加至 Access 数据库
打开准备添加引用的数据库。
在工具栏上单击“代码”,打开 Microsoft Visual Basic® 编辑器。
在“工具”菜单上,单击“引用”。
单击“浏览”并导航到 Owc11.dll 或 Owc10.dll 文件所在的位置。
对于 Access 2003,该文件的默认位置是 C:/Program Files/Common Files/Microsoft Shared/Web Components/11;对于 Access 2002,默认位置是 C:/Program Files/Common Files/Microsoft Shared/Web Components/10。
选择该文件,单击“打开”,然后单击“确定”。
“数据透视表”视图示例
更改视图的布局
向行区域、列区域和明细区域添加字段
下面的代码将 CustomerID、ShipVia 和 Freight 字段添加至窗体(基于“Orders”表)“数据透视表”视图的行、列和明细区域。
Dim fset1, fset2, fset3 As PivotFieldSet
Set fset1 = Me.PivotTable.ActiveView.FieldSets("CustomerID")
Set fset2 = Me.PivotTable.ActiveView.FieldSets("ShipVia")
Set fset3 = Me.PivotTable.ActiveView.FieldSets("Freight")
Me.PivotTable.ActiveView.RowAxis.InsertFieldSet fset1
Me.PivotTable.ActiveView.ColumnAxis.InsertFieldSet fset2
Me.PivotTable.ActiveView.DataAxis.InsertFieldSet fset3
添加总计字段
下面的代码创建了用于计算 CustomerID 数目的汇总字段,并将该字段添加至视图的明细区域。
Me.PivotTable.ActiveView.AddTotal "Count Of Customers", _
Me.PivotTable.ActiveView.FieldSets("CustomerID").Fields("CustomerID"), _
plFunctionCount
Me.PivotTable.ActiveView.DataAxis.InsertTotal _
Me.PivotTable.ActiveView.Totals("Count Of Customers")
添加计算汇总字段
下面的代码创建了一个总计字段用于计算 7% 运费值,并将该字段添加至视图的明细区域。表达式参数将接受任何有效、带有“安全”Visual Basic for Applications (VBA) 函数的 Microsoft Jet Database Engine 表达式。
Me.PivotTable.ActiveView.AddCalculatedTotal "FTax", "运费税", "[Freight] * 0.07"
Me.PivotTable.ActiveView.DataAxis.InsertTotal Me.PivotTable.ActiveView.Totals("FTax") 注释 运行此代码多于一次将导致错误信息。
删除视图中的所有字段
下面的代码删除“数据透视表”视图中的所有字段和汇总,使之空白。其基本思想是循环各个坐标轴并删除所有总计及字段。
注释 此示例代码并不删除应用于字段和汇总的格式。
Dim ptable As PivotTable
Set ptable = Me.PivotTable
With ptable.ActiveView
Do While .RowAxis.FieldSets.Count > 0
.RowAxis.RemoveFieldSet 0
Loop
Do While .ColumnAxis.FieldSets.Count > 0
.ColumnAxis.RemoveFieldSet 0
Loop
Do While .FilterAxis.FieldSets.Count > 0
.FilterAxis.RemoveFieldSet (0)
Loop
Do While .DataAxis.FieldSets.Count > 0
.DataAxis.RemoveFieldSet (0)
Loop
Do While .DataAxis.Totals.Count > 0
.DataAxis.RemoveTotal (0)
Loop
End With
筛选和排序数据
筛选行字段
下面的代码筛选行区域中的 CustomerID 字段。通过使用 IncludedMember 属性将您要查看的值传递给视图。
将此代码添加至 Form_DblClick (Cancel As Integer) 事件。要运行此代码,请在打开后双击窗体。
Dim arrFilter As Variant
arrFilter = Array("ALFKI", "BLAUS", "CHOPS", "EASTC")
Me.PivotTable.ActiveView.RowAxis.FieldSets("CustomerID") _
.Fields("CustomerID").IncludedMembers = arrFilter
责任编辑:小草