我的访问报告中有一个图表。它的行源设置为Query对象,因此我可以在运行时更改图表数据。以下是我更新图表数据的方法。
CurrentDb.QueryDefs("source_query").SQL = "my_query"
Me.my_chart.Requery
这两行是在我的报告的公开活动中。
但是,我的图表在Requery之后没有显示任何内容。那就是我让代码自己运行。如果我在Requery语句中放置一个断点并暂停,我可以看到我的图表最后更新。
为什么会这样?我怎样才能让Requery独立工作?
我正在使用Accessing 2013来存储此数据库。
谢谢。
答案 0 :(得分:0)
您可以选择以编程方式插入一个小暂停,但我建议您将行源或图表更改为sql字符串。
另一种可能性是,在更改查询中的sql之后,将图表的rowsource重新分配给新查询,从而强制图表重新查询最新的sql语句。
答案 1 :(得分:0)
经过几天的搜索,我终于想通了。在这里,我发布我的解决方案,并希望它能帮助遇到同样问题的其他人。
Requery不会更新我的图表,因为Access有时会异步运行代码。
我的“source_query”基于一个只在运行时获取数据的表。但是,我将数据插入此表的方式是:
CurrentDb.Execute "some insert query"
此插入查询需要相当长的时间才能运行,Access在完成之前会执行以下操作。
CurrentDb.QueryDefs("source_query").SQL = "my_query"
Me.my_chart.Requery
结果,我的“source_query”一无所获,因为我的桌子还没准备好。
那么,解决方案呢?更改运行插入查询的方式,如下所示
DoCmd.RunSQL "some insert query"
这会强制Access在进入下一行代码之前完成插入查询。