我想知道是否可以在运行时在报表中设置图表的rowsource属性。
我打算在报告的组标题部分中有一个图表。该图表的行源应根据组标题的值进行更新。
当我尝试在VBA中执行此操作时,收到错误2455-对属性RowSource的无效引用。
我正在使用Access 2003。
谢谢。
我在互联网上搜索了一段时间后才得到灵感。这是我目前实施的解决方案。
首先,确实不能在运行时以编程方式更改图表的rowsource属性。但是,我们可以做的是将rowsource属性设置为Query对象,然后在VBA中更新此查询对象。
这是我的代码的一部分。
CurrentDb.QueryDefs("myQuery").SQL = "a new query"
Me.myChart.Requery
我已将图表的行源设置为名为“ myQuery”的查询对象。我将上面的代码放在了组头的Format事件中,因此每次加载组头时,我都可以使用组头的值来更新Query对象。
另一种方法是打开表单或将图表嵌入报表分为两个步骤。在下面的示例中,我使用的是报表,但它与表单同样有效:
'report name
strReportmName = "SomeReportName"
'open report in design view but hidden
DoCmd.OpenReport strReportmName , acViewDesign, , , , acHidden
'edit chart RowSource
strSQL = "TRANSFORM Sum(Cabecas) AS SomaDeCabecas " & _
"SELECT Data "
...etc...
"PIVOT Categoria In (" & Chr(34) & strTitColunas & Chr(34) & ")"
'update chart RowSource
Reports![SomeReportName].Controls![SomeChartName].RowSource = strSQL
'Save report with edited RowSource
DoCmd.Close acReport, strReportmName , acSaveYes
're-open it in normal, visible mode
DoCmd.OpenReport strReportmName , acViewPreview