Как сделать ссылку на отчет из формы - PullRequest
1 голос
/ 06 июля 2011

Я пытаюсь ссылаться на объект отчета в некотором коде VBA из объекта формы в Access 2010. Я понимаю, что в отчете я могу использовать синтаксис Reports![report name] для ссылки на отчет с именем «report_name», но это похоже, не работает из кода формы.

Итак, мой вопрос: как я могу ссылаться на объект отчета из кода VBA для объекта формы?

Ответы [ 2 ]

4 голосов
/ 06 июля 2011

Вот код для события нажатия кнопки в моей форме.Он открывает отчет с именем rptFoo , затем обращается к открытой форме, чтобы получить его свойство name и Debug.Print это имя в Immediate Window.

Private Sub cmdReferenceReport_Click()
    DoCmd.OpenReport "rptFoo", acViewPreview
    Debug.Print Reports!rptFoo.name '<- view this in Immediate window; Ctrl+g will take you there
End Sub

Вот еще один способ сделать это.

Private Sub cmdReferenceReport_Click()
    DoCmd.OpenReport "rptFoo", acViewPreview
    Dim rpt As Report
    Set rpt = Reports!rptFoo
    Debug.Print rpt.name
    Set rpt = Nothing
End Sub
1 голос
/ 30 апреля 2015

@ HansUp при передаче имени отчета в виде строковой переменной (а не строкового литерала, как в вашем коде), я получаю ошибку времени выполнения 2451 - «Введенное вами имя отчета« reportName »написано с ошибкой или относится к отчет, который не открыт или не существует ". Как и OP, я также использую MS Access 2010.

Мое решение для ссылки на отчет из формы с использованием строковой переменной для имени отчета заключается в использовании синтаксиса в скобках: Отчеты (здесь переменная имени отчета о строке)

Пример:

Public Sub Set_Report_RecordSource(reportName As String, datasourceQueryName As String)
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Purpose: Sets a report's recordsource programmatically. Especially useful
    ' for a report that is used by many forms.
    ' Params:
    '   reportName = Report whose RecordSource needs to be set.
    '   datasourceQueryName = The query name that will return records to display
    '   by the specified report (reportName).
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    DoCmd.OpenReport reportName:=reportName, View:=acViewDesign
    Reports(reportName).RecordSource = datasourceQueryName
    DoCmd.Close ObjectType:=acReport, ObjectName:=reportName, Save:=acSaveYes
End Sub
...