【问题标题】:Access subreport with multiple records - referencing each record in VBA?访问具有多条记录的子报表 - 引用 VBA 中的每条记录?
【发布时间】:2014-06-13 01:33:44
【问题描述】:

我有一个 Access 报表,它有一个嵌套的子报表。在子报表中,有一个图表,我需要通过 VBA 引用它来调整坐标轴。

我遇到的问题是子报表有多个记录,它们适合同一页面。我的 VBA 是在主报表的详细信息部分的 OnPrint 事件中触发的(这是包含图表的子报表所在的位置),并且似乎对图表的引用仅引用了每页上的第一个图表。

我的代码如下:

If (Reports![Desired_Future_State Overview]![Desired_Future_State_Metric Programme Breakdown].Report![Walkup Chart].Object.Axes(2).MaximumScale) = 0 Then
      Reports![Desired_Future_State Overview]![Desired_Future_State_Metric Programme Breakdown].Report![Walkup Chart].Object.Axes(2).ReversePlotOrder = True
End If

我在 MS 文档中看不到有关如何使用此语法引用多个实例的任何信息 - 这可能吗,我将如何处理?

【问题讨论】:

  • 你说的多个实例,你指的是什么?
  • 我指的是图表的实例——因为子报表有多个记录,所以一个页面上有不止一个图表。上面的参考语法只对每页上的第一个图表执行(它在主报表的 OnPrint 事件中)。
  • 您的问题是找到控件或您应该在这些控件上运行的代码吗?如果是先前的,您可能会遍历每个控件(For Each ctl In Me.Controls),检查每个控件的 ControlType。检查此文档:msdn.microsoft.com/en-us/library/office/…。如果控件类型是某种类型(在您的情况下为 acSubform)加上其他一些识别功能,您可以在其上运行您的代码。祝你好运。

标签: ms-access vba


【解决方案1】:

我通常做的是参考报表代码中的具体图表,在下面的例子中我使用了报表的 Detail_Format 并引用了名为 GraphName 的图表

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
 Dim objchart As Object
 Dim objAxis As Object

 Set objchart = Me!GraphName.Object
 Set objAxis = objchart.Axes(2)

 Dim Maxscale As Double
 Dim MinScale As Double

 Maxscale = Forms.MyForm.Maxscale
 MinScale = Forms.MyForm.MinScale

 objAxis.MaximumScale = Maxscale
 objAxis.MinimumScale = MinScale

End Sub

【讨论】:

  • 感谢您的回答。我过去使用过类似的方法来引用主窗体中的图表,但是当图表位于子窗体中(但事件位于主窗体中)时,我似乎使用 Me! 语法出现错误,因此为什么我使用建议的语法。我指的 MS 文档在这里:support.microsoft.com/kb/113352。任何想法如何在子表单中工作?
猜你喜欢
  • 2021-09-23
  • 1970-01-01
  • 2015-02-09
  • 2017-01-02
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多