Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 列出报告及其说明_Ms Access_Ms Access 2007_Vba - Fatal编程技术网

Ms access 列出报告及其说明

Ms access 列出报告及其说明,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,获取报告名称列表的多种方法: 质疑 或VBA Dim rpt As AccessObject Dim dB As Object On Error GoTo Error_Handler Set dB = Application.CurrentProject For Each rpt In dB.AllReports Debug.Print rpt.Name Next rpt 报表可以在属性下有描述(右键单击报表对象),但我无法使用代码访问 我想让一个列表框显示一个与实际报告名关联的用

获取报告名称列表的多种方法: 质疑

或VBA

Dim rpt As AccessObject
Dim dB As Object

On Error GoTo Error_Handler

Set dB = Application.CurrentProject
For Each rpt In dB.AllReports

   Debug.Print rpt.Name
Next rpt
报表可以在属性下有描述(右键单击报表对象),但我无法使用代码访问

我想让一个列表框显示一个与实际报告名关联的用户友好的报告名。此时,我试图避免创建单独的表来管理它。

CurrentProject是一个ADO对象,我不知道如何从ADO中执行您想要的操作。可以使用DAO检索描述属性

? CurrentDb.Containers("Reports").Documents("rptFoo").Properties("Description")
Foo Report
由于描述是一个用户定义的属性,因此在为其指定值之前,它不存在。因此,下一行触发rptLinks的错误3270(找不到属性),因为它没有指定描述

? CurrentDb.Containers("Reports").Documents("rptLinks").Properties("Description")
你可以抓住那个错误。或者看看你能不能利用艾伦·布朗的

一种完全不同的方法是使用report\u name和友好的\u name字段创建tblreport。您必须维护该表,但工作负载应该大致相当于维护报表对象的描述属性。然后,您可以在表上使用一个简单的SELECT作为列表框的行源

更新:您还可以使用自定义函数从MSysObjects中进行选择,以返回每个报告的说明

Public Function ReportDescription(ByVal pName As String) As String
    Dim strReturn As String
    Dim strMsg As String

On Error GoTo ErrorHandler

    strReturn = _
        CurrentDb.Containers("Reports").Documents(pName).Properties("Description")

ExitHere:
    On Error GoTo 0
    ReportDescription = strReturn
    Exit Function

ErrorHandler:
    Select Case Err.Number
    Case 3270 'Property not found.'
        'strReturn = "(no Description)"'
        '* no Description -> just echo report name *'
        strReturn = pName
    Case Else
        strMsg = "Error " & Err.Number & " (" & Err.description _
            & ") in procedure ReportDescription"
        MsgBox strMsg
        strReturn = vbNullString
    End Select
    GoTo ExitHere
End Function
修改原始查询以使用该函数

SELECT
    [Name] AS report_name,
    ReportDescription([Name]) AS friendly_name
FROM MsysObjects
WHERE ([Type] = -32764);

从长远来看,我可能会维护一个Reports表,但现在大约有3个report,所以除非这个应用程序增长,否则我将暂缓。select语句带有一个用于描述的函数,使其更易于用作控制源。
SELECT
    [Name] AS report_name,
    ReportDescription([Name]) AS friendly_name
FROM MsysObjects
WHERE ([Type] = -32764);