Ms access 获取已关闭报表的标题
我有一个用于许多报告的自定义生成打印对话框。它的参数是报表名称、筛选器字符串、报表的打开参数等。我想做的是显示指定在表单上打印的报表的标题。出于性能原因,我不希望打开报告,获取标题并再次关闭它。我宁愿从数据库中获得它,而不实际打开报告本身 一件有效的事情是使用它的类名Ms access 获取已关闭报表的标题,ms-access,reporting,vba,Ms Access,Reporting,Vba,我有一个用于许多报告的自定义生成打印对话框。它的参数是报表名称、筛选器字符串、报表的打开参数等。我想做的是显示指定在表单上打印的报表的标题。出于性能原因,我不希望打开报告,获取标题并再次关闭它。我宁愿从数据库中获得它,而不实际打开报告本身 一件有效的事情是使用它的类名report\u some\u report.caption调用报表,但是如果不使用存储在变量中的报表名,则无法执行此操作。我希望报告(“一些报告”)。标题也能起作用,但它只适用于打开的报告 有没有更好的方法来做这件事,或者我必须做
report\u some\u report.caption调用报表,但是如果不使用存储在变量中的报表名,则无法执行此操作。我希望报告(“一些报告”)。标题也能起作用,但它只适用于打开的报告
有没有更好的方法来做这件事,或者我必须做如下的事情?(哪个有效)
如果不首先打开报表或使用报表类对象(如您所知),就无法从报表中获取报表标题。还值得注意的是,“轻量级”报告(即HasModule property=False的报告)没有类对象
你有两个选择
您可以创建一个带有RptName和RptCaption字段的本地表,并查询该表。当然,然后你需要以某种方式保持更新
您可以编写一个“记忆”结果的函数,以便每次程序运行时只需打开一次给定的报告。例如:
docmd.OpenReport "schedule_simple",acViewDesign,,,acHidden
strCaption = Reports("schedule_simple").Caption
docmd.Close acReport,"schedule_simple"
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