【问题标题】:MS Access 2003/2007 - Chart Object on a sub form, not loading when parent forms loadMS Access 2003/2007 - 子表单上的图表对象,当父表单加载时不加载
【发布时间】:2010-06-29 15:26:06
【问题描述】:

所以我有一个子表单,上面只有一个图表对象。它很小,这是这个子的唯一目的。然后我有大约 10 个表单,每个表单都有一个子窗口,这个表单是子窗口。我使用 UNION 查询在每个表格上显示 10 个帐户的当前余额,并使用此图表进行比较。一切正常,除了一件小事......

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

关于这个有什么想法吗?

谢谢 贾斯汀

【问题讨论】:

  • 只是猜测,您是否尝试过在表单加载事件中重绘子?
  • 不确定重绘是否会做任何事情——刷新可能。或者可能需要重新查询图对象(我不知道它是否有 Requery 方法,因为我在 10 多年前放弃了 MS Graph!)。
  • 是的,我试过 me.Chart.requery(图表是 OLE 对象的名称)。没用。它很有趣...如果您单击子窗口区域,然后单击其他内容,它将出现在每个实例中。所以我尝试将焦点放在对象上,然后再关闭对象……但在父窗体中。所以我不确切知道要使用什么来访问 .chart.setfocus,因为该控件实际上位于子窗体上。我试过forms!subform.chart ...不能那样做。我试过了!subform.chart.setfocus,但这也不起作用.....基本上只是在刺伤。
  • @Remou ...如果Form = frmMain,sub = frmSub,并且Object = Chart,您能否提供一个重新绘制的示例?谢谢!
  • 它有激活事件/方法吗?也许集中注意力?

标签: ms-access forms ms-access-2007 subform


【解决方案1】:

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

示例:

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

Private Sub txtExample_AfterUpdate()
  chart1.RowSource = "SELECT ... FROM ..." 
  chart1.Requery
End Sub

每次更新文本框的值时,图表对象的RowSource属性都会改变和更新。

希望这对你有用

【讨论】:

  • 哪个版本的 MS-Graph 允许动态分配 SQL?我已经 10 多年没有使用 MS-Graph 了,但其中一个问题是在运行时更改 SQL 并不容易,因此您经常必须编辑保存的 QueryDef 才能更改图表所依据的数据。但是,当然——我可能记错了,或者新版本的 MS-Graph 提供了更大的灵活性。
  • @David...好吧,我不确定所有允许它的版本,但我知道你可以使用 2003,可能还有 2007。我有一堆带有图表的报告,这些图表使用上述方法(某种)值从表单传递到行源以及打开报告的时间。我只是希望我可以用它来完成它,因为它在所有这些表格上基本上是完全相同的图表,所以我制作了一个带有图表的子表格以节省一些精力。但鉴于它只有大约 10 种形式,我想我可以走这条路。我在这些报告上使用了上面的 .rowsource 方法...
【解决方案2】:

我四处寻找这个问题,发现me.graph1.requery 在我的 2003 版本中没有帮助。我确实绝望地尝试过:docmd.requery (Graph1) 会崩溃,但是当您输入on error resume next 时,它确实每次都会显示图表!真正的微软风格,我想用另一个错误的东西来修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2021-09-09
    • 2015-02-16
    • 1970-01-01
    相关资源
    最近更新 更多