Ms access MS Access 2003/2007-子窗体上的图表对象,在加载父窗体时不加载

Ms access MS Access 2003/2007-子窗体上的图表对象,在加载父窗体时不加载,ms-access,forms,ms-access-2007,subform,Ms Access,Forms,Ms Access 2007,Subform,所以我有一个子表单,上面只有一个图表对象。它很小,这是这个子窗体的唯一用途。然后我有大约10个窗体,每个窗体都有一个子窗口,这个窗体是它的子窗体。为了便于比较,我使用一个联合查询来显示每个表单上10个账户的当前余额。除了一件小事,一切都很好 当您打开这些表单时,您必须将鼠标移到实际的子窗口,并在其中单击以显示图表。一旦你这样做了,它在任何和所有的表单上都可以正常工作,但是如果在所有这些表单上重复出现同样的问题,那么我确信我在这里遗漏了一些东西 对这个有什么想法吗 谢谢 Justin我认为您可以通

所以我有一个子表单,上面只有一个图表对象。它很小,这是这个子窗体的唯一用途。然后我有大约10个窗体,每个窗体都有一个子窗口,这个窗体是它的子窗体。为了便于比较,我使用一个联合查询来显示每个表单上10个账户的当前余额。除了一件小事,一切都很好

当您打开这些表单时,您必须将鼠标移到实际的子窗口,并在其中单击以显示图表。一旦你这样做了,它在任何和所有的表单上都可以正常工作,但是如果在所有这些表单上重复出现同样的问题,那么我确信我在这里遗漏了一些东西

对这个有什么想法吗

谢谢
Justin

我认为您可以通过不使用子表单而直接在表单中插入图表控件来解决这个问题。我知道在每种表单中设计一个图表控件都会让人头疼,但是通过这样做,您可以直接控制图表的数据源,而不依赖于任何其他表单

示例:

我假设您需要在更新文本框(txtExample)之后更新图表。 您可以使用
afterUpdate
事件更改控件的数据源:

Private Sub txtExample_AfterUpdate()
  chart1.RowSource = "SELECT ... FROM ..." 
  chart1.Requery
End Sub
每次更新文本框的值时,图表对象的
RowSource
属性都将被更改和更新


希望这对您有用

我四处寻找这个问题,发现
me.graph1.requery
在我的2003版本中没有帮助。我确实在绝望中尝试了这一点:
docmd.requery(Graph1)
会崩溃,但当您将
设置为“错误恢复下一步”
时,每次都会显示图表!真正的Microsoft风格我想用另一个bug来修复它。

猜猜看,您是否尝试过在form Load事件中重新绘制sub?不确定重新绘制是否会起作用--刷新可能会起作用。或者graph对象可能需要重新查询(我不知道它是否有重新查询方法,因为我在10多年前就放弃了MS graph!)。是的,我尝试了me.Chart.Requery(Chart是OLE对象的名称)。没用。它很有趣…如果你单击子窗口区域,然后单击其他内容,它将出现在每个实例中。所以我试着将焦点设置在对象上,然后关闭对象…但是在父窗体中。因此,我不知道使用什么来访问.chart.setfocus,因为该控件实际上位于子窗体上。我试过表格!子窗体。图表…不能这样做。我试过了!subform.chart.setfocus,但这也不起作用…..基本上只是尝试而已。@Remou…如果Form=frmMain、sub=frmSub和Object=chart,您能提供一个重新绘制的示例吗?谢谢它是否有激活事件/方法?可能是将焦点设置为它?允许动态分配SQL的MS Graph是哪个版本?我已经10多年没有使用MS Graph了,但它的一个问题是在运行时更改SQL并不容易,因此您经常需要编辑保存的QueryDef以更改图表所基于的数据。但是,当然--我可能记错了,或者MS Graph的更新版本允许更大的灵活性。@David…我不确定是否所有版本都允许它,但我知道你可以在2003年使用,也可能在2007年使用。我有一组带有图表的报告,这些图表使用上述方法(排序)将表单中的值传递到rowsource,并在打开报告时传递给rowsource。我只是希望我可以用这个做不同的事情,因为它在所有这些表单上本质上都是完全相同的图表,所以我制作了一个带有图表的子表单来节省我的一些精力。但考虑到它只有大约10张表格,我想我可以走这条路。不过,我在这些报告中使用了上面的.rowsource方法。。。