2011-07-06 10 views
1

Access 2010のフォームオブジェクトから一部のVBAコードでレポートオブジェクトを参照しようとしています。レポートでは、Reports![report name]という構文を使用して、 "report_name"ですが、これはフォームコード内では機能していないようです。フォームからレポートを参照する方法

私の質問は次のとおりです。フォームオブジェクトのVBAコード内からレポートオブジェクトを参照するにはどうすればよいですか?

+0

レポートコレクションは、のみOPENレポートが含まれています。 AllFormsコレクションを使用して未開封レポートを参照することはできますが、開封済みレポートを使用して同じことを行うことはできません。 –

答えて

4

私のフォーム上のコマンドボタンのクリックイベントのコードです。 rptFooという名前のレポートを開き、その名前のプロパティを取得するために開いているフォームを参照し、その名前をイミディエイトウィンドウにDebug.Printとして参照します。

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

もう一度ありがとうございます。あなたの記事は今日私にとって非常に役立ちます。 – rohrl77

1

@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 
関連する問題