我有一个用于许多报告的自定义构建打印对话框。它的参数是报告名称,过滤字符串,报告的打开参数等。我想要做的是显示指定在表单上打印的报告的标题。出于性能原因,我宁愿不打开报告,获取标题并再次关闭它。我宁愿以某种方式从数据库中获取它而不实际打开报告本身。
可行的一件事是使用它的类名report_some_report.caption
来调用报告,但如果报告名称存储在变量中,则无法执行此操作。我原本期望Reports("some_report").caption
也可以工作,但它只适用于开放报告。
有更好的方法可以做到这一点,还是我将不得不做以下的事情? (哪个有效)
docmd.OpenReport "schedule_simple",acViewDesign,,,acHidden
strCaption = Reports("schedule_simple").Caption
docmd.Close acReport,"schedule_simple"
答案 0 :(得分:1)
如果没有先打开报告或使用报告类对象(如您所知),就无法从报告中获取报告标题。值得注意的是,“轻量级”报告(即HasModule属性= False的报告)没有类对象。
你有几个选择。
您可以编写一个“记忆”结果的函数,这样您每次运行程序时只需打开一次给定的报告。例如:
Function GetReportCaption(RptName As String) As String
Static RptCaptions As Collection
If RptCaptions Is Nothing Then Set RptCaptions = New Collection
On Error Resume Next
GetReportCaption = RptCaptions(RptName)
If Err.Number = 0 Then Exit Function
On Error GoTo 0
DoCmd.OpenReport RptName, acViewDesign, , , acHidden
RptCaptions.Add Reports(RptName).Caption, RptName
DoCmd.Close acReport, RptName
GetReportCaption = RptCaptions(RptName)
End Function