【问题标题】:Access 2007 VBA - Rename report upon closing it?Access 2007 VBA - 关闭报告后重命名报告?
【发布时间】:2011-09-27 05:02:17
【问题描述】:

我有一个根据我的主窗体上按下的按钮动态生成的报告,以便更改过滤器、使用的查询等。我有 DoCmd.Rename 正在将报告重命名为当前(动态)报告标题。但是,我似乎无法在关闭报告时将报告重命名为通用名称。

使用Report_Close() 事件不起作用; Access 告诉我报告仍处于打开状态,因此无法关闭。使用DoCmd.Close 也不起作用;我收到运行时错误 2501(关闭操作已取消)。

此报告关闭后如何重命名?

【问题讨论】:

  • 为什么您认为需要重命名报告?为什么你认为需要保存动态传递的过滤等?
  • 好吧,我正在动态设置记录集等等。问题是当报告被保存时(为了方便起见,有一个命令按钮可以在不先查看报告的情况下保存为 PDF,因为每天会生成 16 种不同的报告),另存为...对话框默认文件名改为通用报告名称(例如 Report.pdf 而不是“Incidents By Assignee.pdf”)。如果我可以在打开时重命名实际的 Report 对象,并在关闭时将其重命名为泛型,这将允许更快的保存到 PDF 功能。
  • 那是重命名源报告的可怕原因。相反,您应该弄清楚如何更改用于 PDF 的文件名。这完全取决于您如何完成“另存为 PDF”。
  • DoCmd.OutputTo acFormatPDF。指定 PDF 名称的唯一方法是同时指定完整路径,这在多个用户使用此应用程序时不起作用。
  • 如果您需要控制文件名,那么您需要使用不同的方法来输出 PDF,例如 PDFCreator。 DoCmd.OutputTo 不是一种非常可靠的方式来做这种事情,因为它是如此有限(正如你所发现的那样)。

标签: vba ms-access-2007


【解决方案1】:

您是说每次有人更改设置并打开报告时,您希望将其保存为 Access 中的新报告

我不会推荐这个。
如果动态变化的东西只是过滤器和查询之类的东西,为什么不总是使用相同的报告并动态设置RecordSource


编辑:

好的,现在我明白你真正想要做什么了。
您可以在代码中在运行时设置报表的 Caption 属性:

Private Sub Report_Open(Cancel As Integer)
    Me.Caption = "Incidents By Assignee"
End Sub

您还可以将标题的文本从主表单传递到报告:

打开报表时,在OpenArgs 参数中传递表单中的文本:

DoCmd.OpenReport "YourReport", acViewNormal, , , , "Incidents By Assignee"

...在报告中,如果 Caption 不为空,只需将其设置为 OpenArgs

Private Sub Report_Open(Cancel As Integer)

    If Nz(Me.OpenArgs) > "" Then
        Me.Caption = Me.OpenArgs
    End If

End Sub

【讨论】:

  • 我已经在设置标题,以便在 Access 界面中正确显示。不幸的是,标题似乎没有用于另存为...对话框中的建议文件名。
猜你喜欢
  • 2011-03-21
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多