我在Access 中创建了一个数据透视图表单 . 在另一个表单中,我有用户选择控件和pivotform作为子表单 . 然后我在主窗体中使用这样的代码 . 对象模型与OWC11(Office Web Components 11)相同 .
Private Function DisplayChart()
With mysubform.Form.ChartSpace
.Clear
.AllowFiltering = True
.HasChartSpaceTitle = True
.ChartSpaceTitle.Caption = "test"
.DisplayFieldButtons = False
.DisplayToolbar = False
.ConnectionString = ...
.CommandText = "SELECT rSeries, rCategory, rDate, rValue " & _
"FROM myTable"
.Charts(0).Type = chChartTypePie
.SetData chDimSeriesNames, chDataBound, "rSeries"
.SetData chDimCategories, chDataBound, "rCategory"
.SetData chDimValues, chDataBound, "rValue"
.HasChartSpaceLegend = True
End With
End Function
常数可以从OWC11中获得
C:\ Program Files \ Common Files \ Microsoft Shared \ Web Components \ 11 \ OWC11.DLL
你需要它们在模块的顶部 . 在这个阶段,我不确定如何从Access pivotchart中提取它们 . 引用OWC11并将子表单ChartSpace设置为声明为OWC11.ChartSpace的变量 . 将代码更改写入'Object'后,删除后期绑定的引用(并重新测试) . 这样,部署时,你的refs不会在64位机器上脱落 .
Private Enum ChartConstants
chDimSeriesNames = 0
chDimCategories = 1
chDimValues = 2
chDataBound = 0
chAxisPositionValue = -8
chAxisPositionCategory = -7
chChartTypePie = 18
End Enum
请记住,您还可以让用户访问数据透视图属性表单,字段列表和删除区域 . 或者他们可以右键单击图表以获取它们 .
(注意 - 这对我来说仍然是一个新发现,所以如果我发现任何问题,我会努力更新这个答案 . )