Vba 如何动态更改Access图表的行源

Vba 如何动态更改Access图表的行源,vba,ms-access,dynamic,mschart,ms-access-2003,Vba,Ms Access,Dynamic,Mschart,Ms Access 2003,我想知道是否有任何方法可以在运行时在报表中设置图表的rowsource属性 我打算在我的报告的组标题部分有一个图表。应根据组标题的值更新此图表的行源 当我尝试在VBA中执行此操作时,出现了错误2455-对属性RowSource的引用无效 我正在使用Access 2003 谢谢。在网上搜索了一段时间后,我得到了灵感。以下是我目前实施的解决方案 首先,确实不能在运行时以编程方式更改图表的rowsource属性。但是,我们可以做的是将rowsource属性设置为查询对象,然后在VBA中更新此查询对象

我想知道是否有任何方法可以在运行时在报表中设置图表的rowsource属性

我打算在我的报告的组标题部分有一个图表。应根据组标题的值更新此图表的行源

当我尝试在VBA中执行此操作时,出现了错误2455-对属性RowSource的引用无效

我正在使用Access 2003


谢谢。

在网上搜索了一段时间后,我得到了灵感。以下是我目前实施的解决方案

首先,确实不能在运行时以编程方式更改图表的rowsource属性。但是,我们可以做的是将rowsource属性设置为查询对象,然后在VBA中更新此查询对象

这是我的部分代码

CurrentDb.QueryDefs("myQuery").SQL = "a new query"
Me.myChart.Requery

我已将图表的行源设置为名为“myQuery”的查询对象。我将上述代码放在我的组标题的Format事件中,因此每次加载组标题时,我都可以使用我的组标题的值来更新查询对象。

另一种方法是打开表单或报表。图表分两步嵌入。在下面的示例中,我使用的是一个报表,但它与表单的效果一样好:

  • 第一步:在“设计”视图中打开报表,但以隐藏模式打开。现在是图表 行源可以编辑(因为您在设计视图中),但 进程不可见(因为您处于隐藏模式)
  • 第二步:保存并关闭隐藏的报告,然后立即在 “可见”模式

对有。“你试过了吗?”大卫:是的,我用不同的方法试过好几次。但是,每当我尝试为RowSource属性赋值时,就会出现错误2455您可以用具有不同RowSource的新图表动态替换图表,但您建议的解决方案通常更好。同样,您可以使用本地表作为数据源,并为每个组/页/项/图表重新填充它。如果你有很多基于复杂数据的简单子集的图表,这是非常合适的。根据报告设计的不同,您可能不需要重新查询-在某些地方,图表会自动重新查询Tanks@david I Lean的新内容。
'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